我在这里查看了许多答案,但没有一个对我有真正的帮助。我注意到我的 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();
}
谁能解释为什么?