考虑以下标记:
<a href="#"></a>
<a href="#"><img src="foo.png" /></a>
<a href="#">aaa</a>
<a href="#">bbb</a>
是否可以使用 jQuery 选择器来获取包含任何文本的第一个锚点(但如果它仅包含图像则不能)?(在这种情况下,aaa
一个)
考虑以下标记:
<a href="#"></a>
<a href="#"><img src="foo.png" /></a>
<a href="#">aaa</a>
<a href="#">bbb</a>
是否可以使用 jQuery 选择器来获取包含任何文本的第一个锚点(但如果它仅包含图像则不能)?(在这种情况下,aaa
一个)
这个复杂的选择器首先检查元素没有任何子元素,然后确保元素不为空。
var anchor = $("a:not(:has(img)):not(:empty)").eq(0);
jQuery 没有惰性first
选择器,因此在过滤它们之前,您仍然会匹配所有锚标记:
$('a').filter(function() {
return $(this).text();
}).first()
var txtEl;
$('a').each(function(i, el){
var text = $(el).text();
if(text != ""){
txtEl = el;
return false;
}
});
$('a').each(function(){
if($.trim($(this).text()) != ''){
alert($(this).text());
}
});
现场演示:http: //jsfiddle.net/AGKeY/2/
这将返回第一个带有来自容器的文本的锚点,而不会遍历所有元素。
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;
}
演示小提琴在这里。