0

次のマークアップを検討してください。

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

jQuery セレクターを使用して、テキストを含む最初のアンカーを取得することは可能ですか (ただし、画像のみが含まれている場合はそうではありません)? (この場合、aaa1つ)

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 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 に答える
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 に答える