繁体   English   中英

JQUERY-如果函数内部的语句不起作用

[英]JQUERY - If statement inside function won't work

我有一个侦听复选框更改的函数。 页面加载后,复选框将被打勾或未打勾,这取决于先前完成的步骤。

我想记录复选框是否被更改。 而且,如果先更改它,然后再更改它,那么它将被重置为开始时的值,因此,它的值没有变化。

我编写了以下代码来做到这一点。

//Checkboxes
    var change ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
    var nochange ="<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
    var changed=false;
    $(".change-event").change(function(){
        //alert("checked");

        if(changed==false) {
            $(this).next(".changed").remove();
            $(this).after(change);
            changed=true;
        }   

        if(changed==true) {

            $(this).next(".changed").remove();
            $(this).after(nochange);
            changed=false;

        }

    });

change函数内部的if语句不起作用。 更改功能本身没有问题,因为注释掉的警报可以正常工作。

我也尝试过if(!checked)和if(checked)作为条件,但是它仍然没有用。

帮助表示赞赏。

你需要

    if(changed==false) {
        $(this).next(".changed").remove();
        $(this).after(change);
        changed=true;
    } else {

        $(this).next(".changed").remove();
        $(this).after(nochange);
        changed=false;

    }

否则,在changed值为false时,如果满足条件,则第一个...它将更改的值changedtrue 然后第二个条件检查一遍就很满足了,因为值changed已经由第一改变if这样的第二块也将被调用......因此抵消了由第一块所做的所有更改。


但看起来可以简化为

var change = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"1\"/>";
var nochange = "<input class=\"changed\" type=\"hidden\" name=\"changed\" value=\"0\"/>";
var changed = false;
$(".change-event").change(function () {
    $(this).next(".changed").remove();
    $(this).after(changed ? nochange : change);
    changed = !changed;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM