2013-03-11 69 views
0

我查看了一些在這裏的答案,沒有人真的幫助過我。我注意到我的jQuery有一個奇怪的問題。我意識到代碼有點快,但是一旦我正常工作,我會整理它。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(); 
    } 

任何人都可以解釋爲什麼嗎?

回答

1

JQuery的.not(selector)刪除從您的選擇相匹配的選擇的標準,而不是檢查,如果條件是不正確的元素。在你的情況下,它會返回一個沒有元素的jquery對象,而不是false

換句話說,.not()不是.is()的反義詞。這就是爲什麼它不工作

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

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(); 


} 
}); 
+0

我交換的方式我首先是因爲在其他使用它的方式是既沒有工作,但如果你看到我的編輯這樣做的工作。不知道爲什麼 – 2013-03-11 15:32:23