我有一个链接。当有人点击它时,我想在检查它之前检查一些条件。如果是false
,则应该阻止默认操作。
$(".pager-next a.active").click(function(event) {
if (!a == 1) {
event.preventDefault();
}
});
该链接仅在a
等于1
时才有效。以上代码是否正确。如果满足特定条件,则a
设置为1
。该链接仅在满足条件时才有效。
答案 0 :(得分:10)
假设'只应在a等于1 '时才有效,你的意思是a
元素的文本等于1,试试这个:
$(".pager-next a.active").click(function(event) {
if ($(this).text() != "1") {
event.preventDefault();
}
});
您可以修改text()
以使用jQuery中可用的元素属性。
<强>更新强>
我的a是一个var,它保持值0直到满足条件。
在这种情况下,问题只是你的相等运算符不正确:
$(".pager-next a.active").click(function(event) {
if (a != 1) {
event.preventDefault();
}
});
答案 1 :(得分:3)
小心:
!a
评估为真或假。如果将a
转换为bool为true
,则!a
的评估结果为false。
所有正整数都评估为true
。因此!a
将评估为false。使用double等于==
到1的比较将使用布尔值!a
或1
测试布尔值true
。因此,如果a
是一个正整数,因为我怀疑它是if
语句将始终评估为false。
如果你想测试是不是别的东西,你需要将比较运算符(===
)中的第一个等号更改为!
。
E.g。 var a = 2; if(a!==1) { // do something }
&lt; - A为2,因此if比较wille评估为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
}
希望有所帮助
P.S。记住你的比较运算符:
!"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();
}