0

我在这里查看了许多答案,但没有一个对我有真正的帮助。我注意到我的 jQuery 有一个奇怪的问题。我意识到代码有点快和讨厌,但一旦我让它正常工作,我会整理它。

jQuery('input#use_points').change(function() {

    if(jQuery(this).not(':checked')) {
       alert('not checked');
       jQuery( "#amount" ).val(0);
       jQuery( "#pounds" ).val(0);
       jQuery(".ui-slider-handle").css({'left': '0'});
       jQuery(".points-text").hide();
       jQuery(".use-points-labels").hide();
       jQuery("#slider-range-max").hide();
       jQuery('#updatecart').click();
    } 

    if(jQuery(this).is(':checked')) {
       alert('is checked');
       jQuery( "#amount" ).val(1);
       jQuery( "#pounds" ).val(0.05);
       jQuery(".points-text").show();
       jQuery(".use-points-labels").show();
       jQuery("#slider-range-max").show();
       jQuery('#updatecart').click();


    }
});

您会注意到我有两个警报“未检查”和“已检查”第一个 if 语句按预期工作。但是,如果未选中,然后我单击复选框,它将贯穿两个语句。给我警报“未检查”,然后紧接着“已检查”

但是,我不明白为什么会发生这种情况,因为它只是在更改而不是复选框的单击操作时被调用。有人有想法吗 ?

提前致谢。

/////////////////////////////// 编辑 ////////////////// ///////////////////////我现在已经回答了我自己的问题。出于某种原因,以这种方式编写它是有效的:

jQuery('input#use_points').change(function() {

    if(this.checked) {
       alert('is checked');
       jQuery( "#amount" ).val(1);
       jQuery( "#pounds" ).val(0.05);
       jQuery(".points-text").show();
       jQuery(".use-points-labels").show();
       jQuery("#slider-range-max").show();
       jQuery('#updatecart').click();
    } else {
       alert('not checked');
       jQuery( "#amount" ).val(0);
       jQuery( "#pounds" ).val(0);
       jQuery(".ui-slider-handle").css({'left': '0'});
       jQuery(".points-text").hide();
       jQuery(".use-points-labels").hide();
       jQuery("#slider-range-max").hide();
       jQuery('#updatecart').click(); 
    }

谁能解释为什么?

4

2 回答 2

1

JQuery.not(selector)从您的选择中删除与选择器的条件匹配的元素,而不是检查条件是否不正确。在您的情况下,它将返回一个没有元素的 jquery 对象,而不是false.

换句话说,.not()不是相反的.is()。这就是为什么它不起作用

http://api.jquery.com/not/

于 2013-03-11T16:45:06.750 回答
0

为什么不把逻辑的第二部分放在 else 语句中呢?

jQuery('input#use_points').change(function() {

if(jQuery(this).not(':checked')) {
   alert('not checked');
   jQuery( "#amount" ).val(0);
   jQuery( "#pounds" ).val(0);
   jQuery(".ui-slider-handle").css({'left': '0'});
   jQuery(".points-text").hide();
   jQuery(".use-points-labels").hide();
   jQuery("#slider-range-max").hide();
   jQuery('#updatecart').click();
} 

else {
   alert('is checked');
   jQuery( "#amount" ).val(1);
   jQuery( "#pounds" ).val(0.05);
   jQuery(".points-text").show();
   jQuery(".use-points-labels").show();
   jQuery("#slider-range-max").show();
   jQuery('#updatecart').click();


}
});
于 2013-03-11T15:29:19.850 回答