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

时间:2011-05-10 15:23:04

标签: javascript jquery jquery-selectors

我正在遍历一些无序列表,我想通过仅使用已保存的选择器(两者都用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-er!

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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