考虑以下标记:
<a href="#"></a>
<a href="#"><img src="foo.png" /></a>
<a href="#">aaa</a>
<a href="#">bbb</a>
是否可以使用jQuery选择器来获取包含任何文本的第一个锚点(但如果它只包含图像,则不会)? (在这种情况下,aaa
一个)
答案 0 :(得分:2)
这个复杂的选择器首先检查元素是否没有子元素,然后确保元素不为空。
var anchor = $("a:not(:has(img)):not(:empty)").eq(0);
答案 1 :(得分:2)
jQuery没有懒惰的first
选择器,所以在过滤之前你仍然会匹配所有的锚标签:
$('a').filter(function() {
return $(this).text();
}).first()
答案 2 :(得分:0)
var txtEl;
$('a').each(function(i, el){
var text = $(el).text();
if(text != ""){
txtEl = el;
return false;
}
});
答案 3 :(得分:0)
$('a').each(function(){
if($.trim($(this).text()) != ''){
alert($(this).text());
}
});
答案 4 :(得分:0)
这将返回包含容器中文本的第一个锚点,而不会遍历所有元素。
var getFirstAnchorWithText = function (container) {
var anchor = null;
container.find('a').each(function () {
if ($(this).text()) {
anchor = $(this);
return false; // Exits from the loop as soon as the element is found
}
});
return anchor;
}
演示小提琴here。