2013-04-24 3 views
1

С момента обновления до jquery 1.9 мой скрипт перестает работать для проверки/снятия флажков.jquery check/uncheck список флажков

У меня есть основной флажок, который контролирует выбор/проверку списка флажков в таблице. После обновления до новой версии jquery только изначально щелкнуть флажки «Проверить все». При повторном нажатии кнопки «Проверить все» флажки отмечены флажками, но при этом «Check all» click after 2 checks table перестанут работать.

enter image description here

сценарий:

$("#itemsList .checkall").on("click", function() { 
     $(".checkbox").attr("checked", $(this).is(':checked')); 
    }); 

также попытался это:

$("#itemsList .checkall").click(function() { 
     $(".checkbox").attr("checked", $(this).is(':checked')); 
    }); 

HTML "Проверить все":

<input type="checkbox" id="checkall" name="checkall" class="checkbox checkall"> 

HTML таблица флажков:

<input type="checkbox" value="1" class="checkbox"> 

Это используется для работы просто отлично, прежде чем переключиться на jquery 1.9. Что дает ???

ответ

2

В отношении jQuery 1.6 для изменения свойств элементов prop следует использовать вместо attr.

$("#itemsList .checkall").on("change", function() { 
    $(".checkbox").prop("checked", this.checked); 
}); 
+0

это работает. Благодарю. почему он работал раньше со старой версией jquery? – ShaneKm

+0

@ShaneKm Добро пожаловать, потому что атрибут 'checked' сопоставляется с свойством (после его установки), а' attr' не изменяет свойства. – undefined

2

Попробуйте использовать prop() вместо с:

По JQuery 1.6, метод .attr() возвращает неопределенное значение для атрибутов , которые не были установлены. Для извлечения и изменения свойств DOM, таких как проверенных, выбранных или отключенных состояний элементов формы, используйте метод .prop().

$("#itemsList .checkall").on("change", function() { 
    $(".checkbox").prop("checked", this.checked); 
}); 
Смежные вопросы