2012-12-04 6 views
0

체크 아웃 페이지 (FoxyCart 템플릿)에 Noty (jQuery 알림 플러그인)을 설치하려고합니다. 만약 내가 제대로 이해하고이 제대로 표시 얻기 위해 수행해야 할 모든 것입니다,jQuery 알림 바

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> 

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/jquery.noty.js"></script> 

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/top.js"></script> 
<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/topLeft.js"></script> 
<script type="text/javascript" src="http://lavajavamaui.com/js/noty/layouts/topRight.js"></script> 
<!-- You can add more layouts if you want --> 

<script type="text/javascript" src="http://lavajavamaui.com/js/noty/themes/default.js"> 
</script> 
<script type="text/javascript"> 
var noty = noty({text: 'noty - a jquery notification library!'}); 
</script> 

: 내 체크 아웃 템플릿의 구역에 다음 코드를 설치했습니다. 어떤 이유로 알림이 나타나지 않습니다. 이 라인에 문제가 있습니까?

<script type="text/javascript"> 
var noty = noty({text: 'noty - a jquery notification library!'}); 
</script> 

여기에 Noty가 설치되어 있어야합니다. the page입니다.

+0

아니, 그건 줄은 올바른 것입니다. – Hubro

+0

그 페이지에서 오류가 많이 .. 그리고 여러 jquery 버전 .. 당신이 먼저 수정해야합니다. –

+0

jquery.min.js (1.7) 파일 하나만 제어 할 수 있습니다. 그 외 모든 것은 호스팅 제공 업체가 제공합니다. 내 jQuery 포함 선을 제거했지만 여전히 표시되지 않습니다. –

답변

1

설명서에 버그가 있습니다. 라인

글로벌 문맥에서 실행할 경우
var noty = noty({text: 'noty - a jquery notification library!'}); 

noty 함수의 결과를 함수 noty 대체 noty 재정의한다. 이론상이 첫 번째 호출은 작동하지만 나중에 함수를 호출하려고하기 때문에 noty에 대한 모든 후속 호출이 실패합니다. 첫 번째 오류가 발생하는 이유는 확실하지 않지만 관련성이 있습니다. 결과를 할당 할 객체의 이름을 변경해보십시오.

var notyObj = noty({text: 'noty - a jquery notification library!'}); 

문제가 해결 될 수 있습니다. 당신은 당신이 그것을 만든 후 통지를 조작 할 필요가없는 경우

당신은 단지 변수에 결과를 지정하지 않고 호출 할 수 있어야한다 :

noty({text: 'noty - a jquery notification library!'}); 

업데이트

하는 경우 (예 : jQuery의 ready 이벤트와 같이) 비전문 컨텍스트 내에서 해당 명령문을 실행하면 variable hoisting 때문에 작동하지 않습니다. Hoisting은 모든 var 문을 취하여 명령문의 맨 위로 이동합니다. 문 :

(function() { 
     var noty = noty({text: 'noty - a jquery notification library!'}); 
    }()); 

이 설정되어 있습니다 :

(function() { 
     var noty; // inside this function noty now refers 
        // to a local variable set to "undefined" 

     // JavaScript looks for local variables before it looks at globals, 
     // so it will use the new local "noty" when it tries to execute the 
     // right side of this line. This will fail because you 
     // can't invoke undefined 
     noty = noty({text: 'noty - a jquery notification library!'}); 
    }()); 
+0

익명 함수 ('js/script.js'에서 작성자가 수행하는 것) 내에서 변수를 이동할'$ (document) .ready()'에 호출을 래핑 할 수도 있습니다. – pete

+0

@pete 변수 호이스트로 인해 실제로 작동하지 않을 것입니다.이를 해결하기 위해 제 답변을 확장 할 것입니다. –

+0

가변 호이 스팅은 아무런 관련이 없습니다. 저는'var notyObj ='문을 * $ (document) .ready()에 대한 익명 함수에 넣는 것에 대해 이야기하고 있습니다. 그렇게함으로써,'notyObj' 변수는 익명의 함수로 선언되고 범위가 지정되어 전역 범위에서 선언되지 않습니다. – pete