如何使用保存的 jquery 对象查找后代

发布于 2024-11-06 01:57:07 字数 1946 浏览 0 评论 0原文

我正在循环访问一些无序列表,我想仅使用保存的选择器(两者都用 jquery 对象包装)来获取所有后代。

这是我的 HTML 示例:

<ul>
    <li><a href="#">item 1</a></li>
    <li><a href="#">item 2</a></li>
    <li><a href="#">item 3</a></li>
    <li><a href="#">item 4</a></li>
    <li><a href="#">item 5</a></li>
</ul>

<ul>
    <li><a href="#">item 6</a></li>
    <li><a href="#">item 7</a></li>
    <li><a href="#">item 8</a></li>
    <li><a href="#">item 9</a></li>
    <li><a href="#">item 10</a></li>
</ul>

<ul>
    <li><a href="#">item 11</a></li>
    <li><a href="#">item 12</a></li>
    <li><a href="#">item 13</a></li>
    <li><a href="#">item 14</a></li>
    <li><a href="#">item 15</a></li>
</ul>

<ul>
    <li><a href="#">item 16</a></li>
    <li><a href="#">item 17</a></li>
    <li><a href="#">item 18</a></li>
    <li><a href="#">item 19</a></li>
    <li><a href="#">item 20</a></li>
</ul>

这是我的 JS 示例:

$(document).ready(function() {

    allUls   = $('ul');
    allAs    = allUls.find('a');

    // shouldn't this next line get all anchors within the second unordered list?
    console.log( allUls.eq(1).find(allAs) );

});

就是这样。我期望将作为第二个列表的后代的一系列锚点发送到控制台。但事实并非如此。

您可以在我的 jsfiddle 示例中亲自查看: http://jsfiddle.net/u6uf4/

我也是接受您可能拥有的任何“更好”的解决方案。请记住,我只想使用已保存的选择器,并且希望避免为此任务创建任何新的选择器。

感谢您花费时间和精力帮助 Jquery 同胞!

I am looping through some unordered lists and I'd like to get all of the descendants by using only the saved selectors (both of which are wrapped with jquery objects).

Here is my sample HTML:

<ul>
    <li><a href="#">item 1</a></li>
    <li><a href="#">item 2</a></li>
    <li><a href="#">item 3</a></li>
    <li><a href="#">item 4</a></li>
    <li><a href="#">item 5</a></li>
</ul>

<ul>
    <li><a href="#">item 6</a></li>
    <li><a href="#">item 7</a></li>
    <li><a href="#">item 8</a></li>
    <li><a href="#">item 9</a></li>
    <li><a href="#">item 10</a></li>
</ul>

<ul>
    <li><a href="#">item 11</a></li>
    <li><a href="#">item 12</a></li>
    <li><a href="#">item 13</a></li>
    <li><a href="#">item 14</a></li>
    <li><a href="#">item 15</a></li>
</ul>

<ul>
    <li><a href="#">item 16</a></li>
    <li><a href="#">item 17</a></li>
    <li><a href="#">item 18</a></li>
    <li><a href="#">item 19</a></li>
    <li><a href="#">item 20</a></li>
</ul>

Here is my sample JS:

$(document).ready(function() {

    allUls   = $('ul');
    allAs    = allUls.find('a');

    // shouldn't this next line get all anchors within the second unordered list?
    console.log( allUls.eq(1).find(allAs) );

});

So there it is. I was expecting for an array of anchors that are descendants of the second list to be sent to the console. But that's not the case.

You can see for yourself on my jsfiddle example: http://jsfiddle.net/u6uf4/

I'm also open to any "better" solutions you may have. Just keep in mind, I'd like to use only the saved selectors and would like to avoid creating any new selectors for this task.

Thank you for your time and effort for helping a fellow Jquery-er!

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

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

发布评论

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

评论(2

故事和酒 2024-11-13 01:57:07

将 jQuery 对象传递给 find() 的选项最近才在版本 1.6 中添加。您的 jsfiddle 示例使用版本 1.5.2。选择左侧最新的 jQuery 版本以使其正常工作。

The option to pass a jQuery object to find() was only recently added in version 1.6. Your jsfiddle example uses version 1.5.2. Select the latest jQuery version on the left to make it work.

心清如水 2024-11-13 01:57:07

关闭,但不需要按 allAs 过滤,只需按 'a' 过滤即可。

allUls.eq(1).find('a')

Close, but you don't need to filter by allAs, just filter by 'a'.

allUls.eq(1).find('a')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文