2010-09-14 2 views
5

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

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; } 

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

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

+0

Спасибо, ребята. Причина этого в том, что я пытаюсь выполнить событие toggle() в заголовке optgroup.Когда пользователь нажимает на это, он скроет связанный с ним раздел, однако он покажет элементы, которые были отмечены. Он работает, если вы переключаете событие туда и обратно без проверки/снятия отметки с элемента. Проблема, с которой я сталкиваюсь, заключается в том, что если у вас есть элемент, который проверяется при загрузке страницы, функция toggle() будет работать. Если вы снимите флажок, toggle() не будет работать для этого элемента, потому что я смотрю на проверенный атрибут. Есть ли другой способ сделать это? – Chris

+0

вам не нужно избегать одиночных кавычек, которые обернуты в двойные кавычки. – RobertPitt

ответ

1

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

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

+0

В конечном итоге я использую свойство checked для переключения групп opts для эффекта show/hide. Если код обнаруживает, что элемент проверен при запуске события переключения, тогда покажите отмеченные элементы, если они не скроют их. Есть ли другой способ достичь этой цели? – Chris

+0

Вам просто нужно использовать свойство 'checked' элемента, например. '$ ('# Идентификатор') [0] .checked' – casablanca

2

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

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

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

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

14

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

this.removeAttr('checked'); 

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

this.attr('checked', 'checked'); 
Смежные вопросы