У меня есть код, который не работает в последней версии Chrome (32.0.1700.107). Версия jQuery - 1.10.1. Этот код работал в других браузерах в течение последнего года. Он правильно работает в IE8. Ключевой раздел кода ниже -

var stateWideCb = $('.showStatewide input');
stateWideCb.change(function () {
    var b = $(this).is(':checked');
            $('.showRegion input').attr('checked', b);
    });

Что происходит, так это то, что после первых двух щелчков по флажку Master код перестает работать.

Вы можете увидеть это на http://jsfiddle.net/photo_tom/dXczB/1/.

1
photo_tom 19 Фев 2014 в 00:45
attri - использовать со значениями в html при загрузке страницы. prop - используется, когда "состояние" элемента изменяется, например, через js.
 – 
heyomi
19 Фев 2014 в 00:57
Mplungjan - Я знаю, что это более короткая версия. Но временные переменные упрощают устранение проблем.
 – 
photo_tom
19 Фев 2014 в 01:43

1 ответ

Лучший ответ

Изменить:

.attr('checked', b);

К

.prop('checked', b);

пример jsFiddle

Как указано в jQuery docs на .attr():

Чтобы получить и изменить свойства DOM, такие как отмечен , выбран, или отключенное состояние элементов формы, используйте метод .prop ().

4
j08691 19 Фев 2014 в 00:49
1
Начиная с версии 1.8, лучшим вариантом является опора. +1
 – 
RaphaelDDL
19 Фев 2014 в 00:52