0

考虑以下标记:

<a href="#"></a>
<a href="#"><img src="foo.png" /></a>
<a href="#">aaa</a>
<a href="#">bbb</a>

是否可以使用 jQuery 选择器来获取包含任何文本的第一个锚点(但如果它仅包含图像则不能)?(在这种情况下,aaa一个)

4

5 回答 5

2

这个复杂的选择器首先检查元素没有任何子元素,然后确保元素不为空。

var anchor = $("a:not(:has(img)):not(:empty)").eq(0);

工作示例 http://jsfiddle.net/dZLKE/3/

于 2013-07-16T08:49:06.330 回答
2

jQuery 没有惰性first选择器,因此在过滤它们之前,您仍然会匹配所有锚标记:

$('a').filter(function() {
    return $(this).text();
}).first()
于 2013-07-16T08:50:15.823 回答
0
var txtEl;
$('a').each(function(i, el){
  var text = $(el).text();
  if(text != ""){
     txtEl = el;
     return false;
  }
});

jQuery 选择器

于 2013-07-16T08:50:47.707 回答
0
$('a').each(function(){
    if($.trim($(this).text()) != ''){
       alert($(this).text());
    }
});

现场演示:http: //jsfiddle.net/AGKeY/2/

于 2013-07-16T08:52:26.923 回答
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;

}

演示小提琴在这里

于 2013-07-16T09:14:45.490 回答