我正在尝试动态设置网页上的某些元素。所以,如果我有以下代码:
<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,请不要选择它。
答案 0 :(得分:9)
如果您想选择所有没有图像作为第一个孩子的链接,请使用以下命令:
$('a:not(:has(> img:first-child))')
如果您想要选择所有完全没有图片的链接,请使用:
$('a:not(:has(img))')
答案 1 :(得分:4)
假设我已正确理解你的问题,
$("a:not(:has(img))");
http://api.jquery.com/not-selector/
http://api.jquery.com/has-selector/
<小时/> 在下面的评论之后,我最初写的选择器应该适合你。
答案 2 :(得分:1)
我还没有尝试过,但你应该这样写:
$("a").filter(function() {
return $(this).filter("> img:first-child").length != 0;
})
首先选择所有a,然后过滤那些img作为第一个孩子的。
<强>更新强>:
切口解决方案肯定更清晰:-)
我经常忘记jquery选择器的多功能性。