Добавление проверенного атрибута через jQuery - PullRequest
8 голосов
/ 14 сентября 2010

Я использую следующий виджет http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/ Пока что это прекрасно работает, но мне нужна помощь в добавлении атрибутов. При использовании Firebug я заметил, что при нажатии на флажок отмеченный атрибут не появляется так, как я ожидал. В своем коде я изменил виджет, я смог добавить код для удаления атрибута флажка.

this.removeAttribute(\'checked\'); this.checked=false;

если товар был проверен заранее. Я успешно использовал этот код

this.setAttribute(\'checked\', \'checked\'); this.checked=true; 

если элемент не был отмечен при загрузке страницы.

Моя проблема возникает, когда мне нужно иметь возможность использовать оба набора кода на флажке, я попытался сделать следующее

onclick="if($(this).attr(\'checked\') == \'true\') { this.setAttribute(\'checked\', \'checked\'); this.checked=true; } else { this.removeAttribute(\'checked\'); this.checked=false; }

код удалит атрибут флажка (если проверено перед загрузкой страницы), но при попытке установить флажок для добавления атрибута (если флажок не отмечен при загрузке страницы) ничего не происходит.

Спасибо за любую помощь и извините за плохое кодирование.

Ответы [ 4 ]

16 голосов
/ 14 сентября 2010

В jQuery для удаления атрибута используйте

this.removeAttr('checked');

и для установки атрибута используйте

this.attr('checked', 'checked');
2 голосов
/ 14 сентября 2010

Я заметил, что просто нажав на флажок, отмеченный атрибут не появляется

Это абсолютно правильно. Атрибут checked не соответствует текущей проверке входа; фактически он соответствует исходной проверке из документа HTML, проверяемость, которая будет восстановлена ​​при сбросе формы.

IE добавляет атрибут, потому что IE не прав. getAttribute / setAttribute не работают в IE - никогда не используйте их в HTML-документе! - они фактически устанавливают свойство, а не атрибут.

Это свойство defaultChecked. Но почему вы пытаетесь установить атрибут checked? Почти никогда нет веских причин для этого. Обычно вам нужно просто старое checked свойство.

1 голос
/ 30 мая 2018
$(this).prop('checked',false)

или

$(this).prop('checked',true)
1 голос
/ 14 сентября 2010

При использовании Firebug я заметил, что при нажатии на флажок отмеченный атрибут не отображается так, как я ожидал.

Зачем вам нужен checked атрибут вообще?Свойство checked предоставляет все функциональные возможности, которые вам обычно требуются, т. Е. При установке флажка для element.checked будет установлено значение true, и наоборот, т. Е. Изменение element.checked изменит состояние блока.

...