jQuery не находит последовательно отключенные элементы в Opera - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть таблица HTML, в которой ячейки первого столбца содержат флажок с классом «myClass». Я также установил флажок в ячейке заголовка этого столбца, и я хочу, чтобы он работал так, чтобы при проверке или снятии флажка с ячейки заголовка также устанавливались или снимались все флажки строк. У меня есть этот код в обработчике кликов флажка заголовка:

if (jQuery(event.target).attr('checked') === true) {
    alert(jQuery('td .myClass:enabled').length);
    jQuery('td .myClass:enabled').attr('checked', 'checked');
} else {
    alert(jQuery('td .myClass:enabled').length);
    jQuery('td .myClass:enabled').removeAttr('checked');
}

Три строки имеют включенные флажки и пять отключенных.

Код отлично работает в IE8, FF3.6 и Chrome 7.0. Однако в Opera 10.63 при первой проверке ячейки заголовка проверяются все восемь строк. Впоследствии код работает как положено.

Предупреждающие сообщения подтверждают это, показывая «3» каждый раз, кроме первого.

Это ошибка в Opera? Если так, есть ли обходной путь?

1 Ответ

2 голосов
/ 17 ноября 2010

Странная синхронность - я только что проанализировал сообщение об ошибке, я думаю, что та же самая проблема пару часов назад:)

Да, возможно, это ошибка, из-за которой Opera не может правильно применить псевдокласс, включенный к элементам, которые были созданы в DOM и позже вставлены в документ.

Может быть приемлемым обходным решением использовать имена классов вместо: enabled. Или, может быть, обратное свойство .checked дважды на всех флажках onload? Похоже, что переключение отключенного или проверенного состояния вперед и назад заставит Opera справиться с этим прекрасно.

...