2012-02-21 7 views
9

링크가 있습니다. 어떤 사람이 그것을 클릭하면 작동시키기 전에 몇 가지 조건을 확인하고 싶습니다. false 인 경우 기본 작업을 방지해야합니다. a1 동일한 경우조건이 거짓이면 기본값을 방지합니다.

$(".pager-next a.active").click(function(event) { 
    if (!a == 1) { 
     event.preventDefault(); 
    }   
}); 

링크에만 작동합니다. 위의 코드가 맞습니까? a은 특정 조건이 충족 될 경우 1으로 설정됩니다. 조건이 충족되는 경우에만 링크가 작동해야합니다. 'A는 1 동일한 경우에만 작동합니다 '에 의해 가정

+4

* 정확한 위의 코드 * 왜 물어합니까 있나요? 문제가 있습니까? 그렇다면 어느 것입니까? –

+0

무엇이'a'입니까? 코드에 게시 할 수 있습니까? – elclanrs

+3

'=='와'==='에는 차이가 있습니다. 'a'가 정수 '1'과 같은지 확인하려면'a === 1 '을 사용해야합니다. 차이점은 http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use를 참조하십시오. –

답변

9

당신이 a 요소의 텍스트가 1과 동일한 의미,이 시도 :

$(".pager-next a.active").click(function(event) { 
    if ($(this).text() != "1") { 
     event.preventDefault(); 
    }   
}); 

당신은 어느 속성을 사용하는 text()을 수정할 수 있습니다 요소의 jQuery에서 사용할 수 있습니다.

UPDATE

내 A는 조건이 충족 될 때까지 값 0을 유지 var에있다.

는 경우, 문제는 평등 운영자가 정확 단순히이었다 :

$(".pager-next a.active").click(function(event) { 
    if (a != 1) { 
     event.preventDefault(); 
    }    
}); 
+0

my a는 조건이 충족 될 때까지 값 0을 보유하는 var입니다. – esafwan

+1

아아, 내 대답을 업데이트 한 경우를 이해합니다. –

+1

자신을 혼동하지 않기 위해서'0'과'1' 대신에'true'와'false'를 사용하는 것이 가치가 있습니다. –

3

는주의 :

!a은 true 또는 false로 평가합니다. bool에 a의 전환이 true 인 경우 !a은 false로 평가됩니다.

모든 양의 정수는 true입니다. 따라서 !a은 false로 평가됩니다. double = ==을 1로 사용하여 비교하면 부울 1 또는 true과 함께 부울 !a이 테스트됩니다. 따라서 a이 양의 정수인 경우에는 if 문이 항상 false로 평가됩니다.

뭔가를 테스트하고 싶다면 비교 연산자 (===)의 첫 번째 같음을 !으로 변경해야합니다.

예. var a = 2; if(a!==1) { // do something } < - A는 2이므로, a과 같음 1이 아니므로 if 비교 결과가 참으로 평가됩니다. 코드에서

우리는이 :

var a = 2; 
if(!a==1){ 
    // a was 2 (or boolean true by default) 
    // but using ! has negated its boolean value 
    // so !a evaluates to boolean false 
    // which is being compared to 1 (evaluating to boolean true) 
    // so this if statement will never get here 
} 

희망

P.S.을하는 데 도움이당신의 비교 연산자를 기억

!"hello world" == 0 // true 
!"hello world" === 0 // false 

업데이트

내가 뭔가가 1입니다 후 일어날 때까지 a0이라고 말했다 다른 게시물에 의견을 보았다. 이 경우

:

var a = 0; // integer 0 or bool false 
if(!a==1){ // if the bool opposite of 0 (false) is equal to 1 (true) 
    // well, opposite of false is true, so you're checking if true is equal to true 
    // so this will get called 
    e.preventDefault(); 
} 
+0

감사합니다. 아주 포괄적 인 설명이었습니다. 내가 물었던 것보다 훨씬 많은 것을 배웠다. – esafwan