Почему * [флажок] не соответствует ни одному флажку ввода? - PullRequest
3 голосов
/ 30 декабря 2011

Допустим, у меня есть флажок с идентификатором 'test' на странице, загруженной с помощью jQuery 1.5.2.

<input id="test" type="checkbox"/>

Теперь, если я нажму на флажок, чтобы установить его в checkedсостояние ...

Почему $("#test").is(":checked") возвращает true и $("#test").is("*[checked]") возвращает false.

Вот jsFiddle с описанным сценарием

Ответы [ 5 ]

8 голосов
/ 30 декабря 2011

[checked] - это селектор, который выбирает элементы, которые в настоящее время проверены с атрибутом checked, а не свойством - другими словами, "если элемент имеет атрибут проверенного Подними это ".

Если вы хотите проверить, установлен ли флажок или нет, вы должны использовать :checked.

Пример использования:

if($('#test').is(':checked'))
{
   return true;
}

С jQuery 1.6 и выше вы можете использовать функцию .prop() из соображений производительности.

if($('#test').prop('checked'))
{
   return true;
}
2 голосов
/ 30 декабря 2011

Проверяемость флажка отражается в свойстве объекта checked. Он может быть установлен атрибутом DOM checked, но направление одностороннее: атрибут DOM не обновляется при изменении свойства объекта. :checked - выделенный псевдоселектор, который будет проверять свойство объекта; [checked] - это селектор, который проверяет наличие атрибута DOM.

2 голосов
/ 30 декабря 2011

Потому что checked не является атрибутом элемента input. Это свойство . Ваш селектор *[checked] проверяет наличие атрибута checked, который никогда не будет существовать в элементе. Вы можете добавить checked="checked" к элементу input, который устанавливает свойство checked этого объекта, но этот атрибут всегда будет присутствовать, даже если снять флажок. Это связано с тем, что установка и снятие отметки изменяет только свойство checked флажка, а не атрибут checked.

0 голосов
/ 30 декабря 2011

отметьте это http://jsfiddle.net/2QZvU/5/

это должно быть * [: check]

Как сказал Мэтт, флажок - это свойство, а не атрибут

0 голосов
/ 30 декабря 2011

См. Обсуждение отмеченного свойства на странице свойств jQuery:

http://api.jquery.com/prop/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...