可以对存储的选择器对象执行额外的 jquery 选择吗?

发布于 2024-10-08 03:42:05 字数 1085 浏览 2 评论 0原文

示例数据:

<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]");

... 只返回具有特殊属性的输入。

更进一步,我可以获得具有特殊属性的输入,其中它们还具有“yes”的新属性:

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

但是如果我只想使用“the_inputs”并创建 var the_special_inputs 而无需做另一个选择器?换句话说,如果我有存储的 var:

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

...有没有办法在该存储的 var 上编写一个额外的选择器,这会给我与 $("input.foo[special]"); 相同的结果 或其他类似上面的内容,但只是使用之前存储的 the_inputs

我尝试过一些不起作用的事情:

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

可能吗?

Example data:

<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">

now the jquery:

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

...will give me a jquery object of all the inputs.

I can also do:

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

... which returns only the inputs that have a special attribute.

Even further, I can get just the inputs that have a special attribute where they also have the attribute new of "yes":

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

But what if I just wanted to use 'the_inputs' and create the var the_special_inputs without doing another selector? in there words, if I have the stored var:

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

...is there a way to write an additional selector on that stored var that would give me the same results as $("input.foo[special]"); or the others like above but JUST using the_inputs which was previously stored?

a few things I've tried that don't work:

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

is it possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泅人 2024-10-15 03:42:05

使用 jQuery 的 .filter() 方法

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

这将创建一个新集合,将原始集合简化为与您传递的选择器匹配的集合,而无需进行额外的 DOM 选择。

还有另一种方法称为.not(),它保留那些与选择器不匹配的内容。

Use jQuery's .filter() method.

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

This will create a new set that is the original reduced to those that match the selector you pass without having to do an additional DOM selection.

There's another method called .not() that retains those that do not match the selector.

夜还是长夜 2024-10-15 03:42:05

您也可以使用 jQuery find() 方法,但过滤器要好得多:

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

You can use the jQuery find() method as well, but filter is much better :

var the_inputs = $("input.foo");
var the_special_inputs = the_inputs.find("[special][new='yes']");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文