jQuery: можно ли проверить как тип ввода, так и атрибут в одном селекторе? - PullRequest
3 голосов
/ 09 июня 2011

У меня есть список input элементов, и с помощью одного селектора я хочу найти те, которые

  1. являются флажками
  2. с установленным атрибутом value

Могу ли я это сделать?

Я пытался:

  • $(items).find("input:checkbox[value]")
  • $(items).find("input[value]:checkbox")

Нооба игнорируют [value] и только тест для input:checkbox.

Конечно, я могу использовать два селектора, но только один будет лучше.


Мой основной пример использования this .

По сути, я хочу предпринять некоторые действия с флажком в зависимости от того, сняты ли флажки с других флажков или нет.В этом примере флажок «родительский» все еще установлен, потому что селектор jQuery "input[value]:checkbox" в функции getChildrenCheckboxes совпадает с флажком «No Child» и другими флажками.

Ответы [ 2 ]

4 голосов
/ 09 июня 2011

Во-первых, если люди потратят время на то, чтобы предоставить вам ответы, вы, по крайней мере, можете приложить усилия для принятия этих ответов .

Во-вторых, в отношении вашего вопроса вы можете использовать либо filter() или проверьте, является ли значение пустым:

$('input[value!=""]:checkbox').addClass('selected');

http://jsfiddle.net/niklasvh/pEK3c/

или

$('input:checkbox').filter(function(){
 return this.value.length;   
}).addClass('selected');

пример: http://jsfiddle.net/niklasvh/duAB8/

edit

Что касается вопроса, почему бы просто не использовать $('input[value]') для проверки наличия value, во-первых, это зависит от того, хотите ли вы знать, пусто ли оно, иливообще нет, а во-вторых, и, возможно, самое главное, хотите ли вы, чтобы оно работало согласованно в разных браузерах?

Следующая разметка:

<input type="checkbox" value="2" />
<input type="checkbox" value="" />
<input type="checkbox"  />
<input type="checkbox" value="23" title="a" />

Со следующим селектором:

$('input:[value]:checkbox').prop('checked',true);

даст следующие результаты:

Chrome 11, X - - X
FF4,       X - X X
IE 8,      X - X X

Итак, вам интересно узнать, определен ли атрибут или он пуст?Если первый, вы можете ожидать дифференцированных результатов для этого селектора.Тогда как в двух первых примерах оба дают согласованные результаты для X - - X.

Если бы вы искали атрибут [title] ...

, то было бы совсем по-другому.
0 голосов
/ 09 июня 2011

РЕДАКТИРОВАТЬ:

Если вы хотите элементы, которые являются флажками И имеют атрибут значения, вы можете использовать селектор нескольких атрибутов: http://api.jquery.com/multiple-attribute-selector/

$("input[type='checkbox'][value]")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...