2012-02-21 7 views
9

私にはリンクがあります。ある人がそれをクリックすると、動作させる前にいくつかの条件をチェックしたいと思う。 falseの場合は、デフォルトのアクションを防止する必要があります。 a1に等しい場合条件が偽の場合はデフォルトを防ぎます

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

リンクにのみ動作するはずです。上記のコードは正しいですか?特定の条件が満たされている場合、a1に設定されます。リンクは、条件が満たされている場合にのみ機能します。 「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は、条件が満たされるまで値0を保持するvarです。 – esafwan

+1

ああ、私は自分の答えを更新したと思います。 –

+1

あなた自身を混同しないために、 '0'と' 1'の代わりに 'true'と' false'を使う価値があります。 –

3

は注意してください:

!aは、trueまたはfalseに評価されます。ブールへのaの変換がtrueの場合、!aはfalseと評価されます。

すべての正の整数はtrueと評価されます。したがって、!aはfalseと評価されます。 ==を1に設定して比較すると、ブールがブール値1またはtrueでテストされます。したがって、aが正の整数であると思われる場合は、ifステートメントは常にfalseと評価されます。

何か他のものではない場合、比較演算子(===)の最初の等価を!に変更する必要があります。

など。 var a = 2; if(a!==1) { // do something } < - Aは2であるため、aと等しい1ではないため、比較結果は真と評価されます。

我々が持っているあなたのコードで

P.S.を助け

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 
} 

・ホープあなたの比較演算子を忘れないでください:

!"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

関連する問題