说我有以下标记
<div><p></p><blockquote></blockquote><ul>...</ul></div>
<div><p></p><blockquote></blockquote><ul>...</ul></div>
...
<div><p></p><blockquote></blockquote><ul>...</ul><ul></ul></div>
是否有一个jQuery选择器/遍历技术,我可以用来让第n个孩子匹配每个div中的复杂选择器,这是一个健壮的(在某种意义上我可以改变选择器不匹配的元素而不会弄乱事物)
以下是一些无法帮助说明问题的方法
$("div").children("p, ul").filter(":eq(1)") // returns just the first <ul> in the first div
$("div").children("p, ul:eq(1)") // returns all the p's and the first ul in the first div
$("div").find(":not(blockquote):eq(1)") //returns the correct elements, but at the expense of having to reference the elements we're *not* after. Also not restricted to just children
$("div").find(">:not(blockquote):eq(1)") ) // tackles the children problem, but ">" without a parent is not officially supported and jQuery want to deprecate (Can't find the reference but I raised it once in discussion on the jQuery bug boards and John Resig himself said this)
最后,对于某些上下文,我问这个是为了总是找到表的第i列,无论第一列是否包含th
或td
个单元
答案 0 :(得分:4)
是的,jQuery有一个nth-child selector
答案 1 :(得分:1)
在考虑之后,我意识到需要的是某种:is()
选择器来包装复合选择器。 jQuery不会实现它(for good reasons),但后来我意识到双重否定与正面相同,所以以下适用于一般情况
$("div").find(">:not(:not(p, ul)):eq(1)")