jQuery来选择没有孩子或第一个孩子不是图像
我想动态样式在我的网页上的一些元素。所以,如果我有以下代码:jQuery来选择没有孩子或第一个孩子不是图像
<a href="#">
Select Me
</a>
<a href="#">
<img src="blah.jpg" />
Don't select me
</a>
<a href="#">
<div>Don't select me either</div>
<img src="blah.jpg" />
</a>
<a href="#">
<div>You can select me too.</div>
</a>
我希望它选择第一个和第四个标签。
从我可以告诉,通过使用:
$("a:first-child")
不会选择第一个标签,因为它没有任何子女(只是文本)。第二个标签不应该被选中,例如:
$("a:first-child").not("img)
但是遗漏了第一项。
编辑:如果在A元素的任何地方都有IMG,请不要选择它。
如果你想选择哪一个没有图像作为第一个孩子所有链接,使用这样的:如果你想选择哪一个没有图片的所有环节
$('a:not(:has(> img:first-child))')
在所有,使用此:
$('a:not(:has(img))')
假设我正确理解你的问题,
$("a:not(:has(img))");
http://api.jquery.com/not-selector/
http://api.jquery.com/has-selector/
下面您的意见后,我原来写的选择应该为你工作。
会跳过图像不是第一个孩子的链接。 – nickf 2010-05-20 15:24:51
@nickf:啊,我看错了(看起来你也是)。 – 2010-05-20 15:26:00
我想他想让只有第一个孩子不能成为img。这段代码会过滤出一些不是第一个孩子的图片。 – 2010-05-20 15:26:09
我还没有尝试过,但你应该写这样的事情:
$("a").filter(function() {
return $(this).filter("> img:first-child").length != 0;
})
它会首先选择所有的a,然后过滤那些有img作为第一个孩子的。
UPDATE:
nickf解决方案是绝对清晰的:-)
我经常忘了jQuery选择如何多才多艺的。
我认为这将起作用,但它让我的头部伤害推理。该文档已经说过,如果“它的任何后代与选择器相匹配”都包含这个元素,但是不会将它限制为直接后代。你知道这是否会匹配,如果有一个主播的直系后代内的图像? – tvanfosson 2010-05-20 15:37:30
梅,模仿; -P – 2010-05-20 15:37:57
tvanfosson:事实上*有*的作品,但你可以看到,下一个选择器以>开头,意思是“子女”(直接后代)。 – 2010-05-20 15:43:25