如果条件为false,则阻止默认设置

If conditions false then prevent default

本文关键字:默认 设置 条件 false 如果      更新时间:2023-09-26

我有一个链接。当有人点击它时,我想在让它工作之前检查一些条件。如果是false,则应阻止默认操作。

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

只有当a等于1时,链接才应该工作。上述代码是否正确。如果满足特定条件,则将CCD_ 4设置为CCD_。只有在满足条件的情况下,链接才能工作。

假设'仅在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();
    }            
});

小心:

!a的计算结果为true或false。如果a到布尔的转换是true,则!a评估为false。

所有正整数的求值结果为true。因此!a将评估为false。使用double等于==与1的比较将测试布尔!a与布尔1true。因此,如果a是一个正整数,正如我所怀疑的那样,那么您的if语句将始终计算为false。

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

例如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
}

希望能帮助

附言:记住你的比较运算符:

!"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();
}