Javascript 如果条件为false,则防止默认

Javascript 如果条件为false,则防止默认,javascript,jquery,conditional,preventdefault,Javascript,Jquery,Conditional,Preventdefault,我有一个链接。当有人点击它时,我想在让它工作之前检查一些条件。如果为false则应防止默认操作 $(".pager-next a.active").click(function(event) { if (!a == 1) { event.preventDefault(); } }); 只有当a等于1时,该链接才有效。上述代码是否正确a设置为1。链接应仅在满足条件的情况下工作。假设“a等于1时应仅工作”您的意思是a元素的文本等于1,请尝试以下

我有一个链接。当有人点击它时,我想在让它工作之前检查一些条件。如果为
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中可用的元素属性

更新


my a是一个var,在满足条件之前保持值0

在这种情况下,问题只是等式运算符不正确:

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

的计算结果为真或假。如果
a
到bool的转换为
true
,则
!a
的计算结果为false

所有正整数的计算结果均为
true
。所以
!a
将计算为false。使用double equals
=
与1进行比较将测试该布尔值
!带有布尔值
1
true
的a
。因此,如果
a
是一个正整数,我怀疑它是一个正整数,那么您的
if
语句的计算结果将始终为false

如果要测试某个东西不是其他东西,则需要将比较运算符(
===
)中的第一个相等值更改为


例如,
var a=2;如果(a!==1){//do something}
上面的代码正确吗?你有问题吗?如果是,是哪一个?小心点,
=
==
之间有区别。如果要检查
a
是否等于整数
1
,则应使用
a===1
。根据你的解释,我认为你的意思是
a!=1
而不是
!a==1
。lol捕捉到了它。Mathias Bynens是对的,我很确定这是你的问题,但也可能是错误的类型比较。这可能也很有帮助:我的a是一个var,在满足条件之前保持值0。为了不让你自己感到困惑,可能值得你使用
true
false
而不是
0
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
}
!"hello world" == 0 // true
!"hello world" === 0 // false
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();
}