Возможно выполнить дополнительный выбор jquery на сохраненном объекте селектора? - PullRequest
8 голосов
/ 19 декабря 2010

Пример данных:

<input class="foo" special="yes" value="1" new="yes">
<input class="foo" special="no" value="2" new="yes">
<input class="foo" value="3" new="red">
<input class="foo" special="yes" value="4">
<input class="foo" value="5" new="yes">

Теперь jquery:

var the_inputs = $("input.foo");

... даст мне объект jquery всех входных данных.

Я также могу сделать:

var the_special_inputs = $("input.foo[special]");

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

Более того, я могу получить только те входные данные, которые имеют специальный атрибут, где они также имеют атрибут new "yes":

var the_special_inputs = $("input.foo[special][new='yes']");

Но что, если я просто хотел использовать 'the_inputs' и создать переменную the_special_inputs без использования другого селектора? в словах, если у меня есть сохраненная переменная:

var the_inputs = $("input.foo");

... есть ли способ написать дополнительный селектор для этой сохраненной переменной, который дал бы мне те же результаты, что и $("input.foo[special]"); или другие, как указано выше, но ПРОСТО использует the_inputs, который был ранее сохранен?

несколько вещей, которые я пробовал, которые не работают:

$(the_inputs+"[special][new='yes']");
$("[special]",the_inputs);

это возможно?

Ответы [ 2 ]

11 голосов
/ 19 декабря 2010

Использование jQuery's .filter() метод .

var the_inputs = $("input.foo");
var the_special_inputs = the_inputs.filter("[special][new='yes']");

Это создаст новый набор, который будет уменьшен до тех, которые соответствуют выбранному вами селектору, без необходимости дополнительного выбора DOM.

Существует еще один метод , называемый .not(), который сохраняет те, которые не соответствуют селектору.

1 голос
/ 19 декабря 2010

Вы также можете использовать метод jQuery find () , но фильтр намного лучше:

var the_inputs = $("input.foo");
var the_special_inputs = the_inputs.find("[special][new='yes']");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...