2011-05-27 79 views
1

此代碼工作正常使用jQuery 1.5.1,但是當我使用jQuery 1.6.0它改變點擊後的複選框的值,但它不會添加完成的類」 '的元素。jQuery的1.6不復選框變化添加類元素

$("input:checkbox").live('change', function(eve) { 
    eve.preventDefault(); 
    var el = this.id ; 
    var done = this.done ; 
    if($(this).attr("checked") == true) { 
     $('#item-'+el).find(".text").addClass('done'); 
     //return false; 
    } 
    if($(this).attr("checked") == false) { 
     $('#item-'+el).find(".text").removeClass('done'); 
     //return false; 
    } 

    $.post('taskDone.php', { 
     id: this.id, 
     value: $(this).attr("checked") ? 1 : 0 
    }, function(data) {}); 
}); 

回答

3

之前1.6

$(this).attr("checked")是不一致的,因爲它可以是一個布爾,也可以是一個

jQuery的說是這樣的:屬性是裏面有什麼一屬性。因此,它停止向您發送一個bool值,它將發送給您一個string值。

,如果你改變這一切

$(this).attr("checked") 

$(this).prop("checked") 

你不會有任何問題


jQuery Documentation

例如,考慮由HTML標記<input type="checkbox" checked="checked" />定義的DOM元素,並假設它是在一個JavaScript變量命名ELEM:

elem.checked      true (Boolean) 
$(elem).prop("checked")   true (Boolean) 
elem.getAttribute("checked")  "checked" (String) 
$(elem).attr("checked")(1.6+)  "checked" (String) 
$(elem).attr("checked")(pre-1.6) true (Boolean) 
+0

非常感謝你,是每一件事情是確定現在:) – Ahmad 2011-05-27 07:30:48

1

或更新到1.6.1版本。 的Attr()函數將表現爲在1.5,所以你不必通過您的代碼抓取發現每次調用ATTR(),並決定是否需要將其更改爲支撐()。

+0

不,我更新到1.6.1版本,它更容易爲我,但沒有發生,我認爲.prob是1.6 + ...謝謝帕特里克: ) – Ahmad 2011-05-27 07:32:54