#jquery
#jquery
Вопрос:
У меня есть форма, в которой есть входные данные select, а также флажки. Следующий селектор:
$(':checked')
выбраны оба, поэтому мне пришлось использовать:
$(':checkbox:checked')
чтобы установить только те флажки, которые были установлены.
Вопрос: Я нашел ошибку в jQuery, или это только мое понимание?
Комментарии:
1.Стоит отметить, что использование
$(':checkbox')
подразумевает использование универсального селектора*
, эффективно предоставляющего$('*:checkbox')
, поэтому jQuery проверяет каждый элемент на странице, чтобы увидеть, относится ли он кtype="checkbox"
. Попробуйте уменьшить рабочую нагрузку с помощью$('input:checkbox')
🙂 Ссылки::checkbox
.2. Я думаю, нам нужно увидеть некоторый HTML,
:checked
не следует выбирать параметры выбора: jsfiddle.net/ambiguous/2sxAC3. @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, а затем выполнить итерацию только по тем элементам со следующим именем тега. Это быстрее и эффективнее.