jQuery:选择包含任何文本的第一个锚点

时间:2013-07-16 08:44:14

标签: jquery jquery-selectors selector

考虑以下标记:

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

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

5 个答案:

答案 0 :(得分:2)

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

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

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

答案 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;
  }
});

Jquery Selector

答案 3 :(得分:0)

$('a').each(function(){
    if($.trim($(this).text()) != ''){
       alert($(this).text());
    }
});

生活演示:http://jsfiddle.net/AGKeY/2/

答案 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