10

リンクがあります。誰かがそれをクリックしたとき、私はそれを機能させる前にいくつかの条件をチェックしたいと思います。これfalseがデフォルトのアクションである場合は、防止する必要があります。

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

リンクは、aがに等しい場合にのみ機能するはず1です。上記のコードは正しいですか。特定の条件が満たされた場合ににa設定されます。1リンクは、条件が満たされた場合にのみ機能する必要があります。

4

2 に答える 2

10

'がaが1に等しい場合にのみ機能するはずであると仮定すると、a要素のテキストが1に等しいことを意味し、次のことを試してください。

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

text()jQueryで使用可能な要素の属性を使用するように修正できます。

アップデート

my aは、条件が満たされるまで値0を保持する変数です。

その場合、問題は単にあなたの等式演算子が正しくなかったことでした:

$(".pager-next a.active").click(function(event) {
    if (a != 1) {
        event.preventDefault();
    }            
});
于 2012-02-21T10:44:33.047 に答える
4

気をつけて:

!atrueまたはfalseに評価されます。aのboolへの変換がfalseとtrue評価された場合!a

すべての正の整数はに評価されtrueます。したがって!a、falseと評価されます。double = 1を使用して比較すると、そのブール値とブール値または==がテストされます。したがって、が正の整数であると私が思う場合、あなたのステートメントは常にfalseと評価されます。!a1trueaif

テストしたいものが他のものではない場合は、比較演算子(===)の最初の等号をに変更する必要があります!

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

あなたのコードには次のものがあります:

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
}

お役に立てば幸い

PS比較演算子を覚えておいてください:

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

アップデート

別の投稿であなたのコメントを見ましたが、それa0何かが起こるまでです1

この場合:

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();
}
于 2012-02-21T10:54:30.223 に答える