条件が誤っている場合、デフォルトを防ぎます
-
28-10-2019 - |
質問
リンクがあります。あるいはそれをクリックすると、機能させる前にいくつかの条件をチェックしたいと思います。もし false
デフォルトのアクションを防ぐ必要があります。
$(".pager-next a.active").click(function(event) {
if (!a == 1) {
event.preventDefault();
}
});
リンクは、場合にのみ機能する必要があります a
に等しい 1
. 。上記のコードは正しいです。 a
に設定されています 1
特定の条件が満たされている場合。リンクは、条件が満たされている場合にのみ機能する必要があります。
解決
と仮定するAが1に等しい場合にのみ機能する必要があります'あなたはのテキストを意味します a
要素は1に等しい、これを試してください:
$(".pager-next a.active").click(function(event) {
if ($(this).text() != "1") {
event.preventDefault();
}
});
修正できます text()
jqueryで利用できる要素の属性を使用するには。
アップデート
私のAは、条件が満たされるまで値0を保持するVARです。
その場合、問題は単にあなたの平等オペレーターが間違っていたことでした:
$(".pager-next a.active").click(function(event) {
if (a != 1) {
event.preventDefault();
}
});
他のヒント
気をつけて:
!a
trueまたはfalseに評価します。の変換の場合 a
ブールには true
それから !a
falseに評価します。
すべての正の整数が評価します true
. 。そう !a
falseに評価されます。二重等しいものを使用した比較 ==
to 1はそのブール値をテストします !a
ブールと 1
また true
. 。だから a
私はそれがあなたのものだと思うので、ポジティブな整数です if
ステートメントは常にfalseに評価されます。
テストしたい場合は、比較演算子の最初の等しいものを変更するために必要なものではありません(===
) になる !
.
例えば var a = 2; if(a!==1) { // do something }
<-aは2であるため、比較意志がtrueとして評価する場合 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
アップデート
私は別の投稿にあなたのコメントを見ました a
は 0
何かが起こるまでそうです 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();
}