我正在遍历一些无序列表,我想通过仅使用已保存的选择器(两者都用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!
答案 0 :(得分:5)
最近在版本1.6 中添加了将jQuery对象传递给find()
的选项。您的jsfiddle示例使用1.5.2版。选择左侧的最新jQuery版本以使其正常工作。
答案 1 :(得分:1)
关闭,但您不需要按allAs过滤,只需按'a'过滤。
allUls.eq(1).find('a')