: проверено, также ли выбираются входные данные select

#jquery

#jquery

Вопрос:

У меня есть форма, в которой есть входные данные select, а также флажки. Следующий селектор:

 $(':checked')
  

выбраны оба, поэтому мне пришлось использовать:

 $(':checkbox:checked')
  

чтобы установить только те флажки, которые были установлены.

Вопрос: Я нашел ошибку в jQuery, или это только мое понимание?

Комментарии:

1.Стоит отметить, что использование $(':checkbox') подразумевает использование универсального селектора * , эффективно предоставляющего $('*:checkbox') , поэтому jQuery проверяет каждый элемент на странице, чтобы увидеть, относится ли он к type="checkbox" . Попробуйте уменьшить рабочую нагрузку с помощью $('input:checkbox') 🙂 Ссылки: :checkbox .

2. Я думаю, нам нужно увидеть некоторый HTML, :checked не следует выбирать параметры выбора: jsfiddle.net/ambiguous/2sxAC

3. @mu слишком короткое … ваш комментарий неточен, это зависит от браузера. FF3.6 будет сообщать иначе, чем IE 8.

4. Спасибо, Дэвид. Для производства я сделал это: $ (‘#myID input: флажок: установлен’)

5. @John: Интересно. Я проверил с помощью WebKit, и он не выбирает параметры выбора, Firefox 4 делает, и я понятия не имею, что делает IE. Я бы, вероятно, назвал это ошибкой Firefox. В документах jQuery даже говорится, что «:checked» предназначен только для флажков и переключателей.

Ответ №1:

технически элементы выбора, переключатели и флажки имеют состояние checked, так что это не ошибка.

ввод-проверен


документация jQuerys :checked не должна работать для select элементов, так что вы можете быть правы … тестирование в jsfiddle

Селектор :checked работает для флажков и переключателей. Для выбранных элементов используйте селектор :selected.


Из этого теста:http://jsfiddle.net/hunter/zAC54 /

Я не вижу результатов, которые вы видите…

Добавили ли вы checked свойство к select входным данным с помощью кода?

Ответ №2:

:checked это не то, что вам нужно, если вы просто хотите проверить наличие флажков

 $("input:checked") //selector for checked radio buttons and checkboxes
$("input:radio:checked") //selector for checked radio buttons
$("input:checkbox:checked") //selector for checked checkboxes
  

Наконец, из соображений производительности не рекомендуется использовать селекторы классов и другие специальные селекторы сами по себе без имени тега. Причина этого в том, что jQuery будет выполняться, хотя все элементы dom ищут этот класс или селектор.. Если вы примените имя тега, jquery попытается сначала использовать getElementsByTagName, а затем выполнить итерацию только по тем элементам со следующим именем тега. Это быстрее и эффективнее.