14

私がする必要があるのは、hrefプロパティに「タグ」を含み、要素のテキストに特定の単語が含まれているページ上のすべての要素を見つけることです。

例えば

<a href="/my/tag/item2">cars</a>

私は次のようにhrefのタグを持つすべての要素を取得できることを知っています:

$("a[href*=tag]");

また、次のようなテキストで「cars」を含むすべての要素を見つけることができます。

$("a:contains('cars')");

しかし、これら2つの条件を1つのステートメントに組み合わせるには、次のようになります。hrefに「tag」を含み、テキストに「cars」を含むすべての要素を検索しますか?

4

3 に答える 3

22

試しました$("a[href*=tag]:contains('cars')");か?

あなたはそのように永遠に続けることができます、すなわち

$("a.className.anotherClass[href*=tag][title=test]:contains('cars'):visible");
于 2013-03-06T23:36:01.163 に答える
5

他の人が言ったように、または、たとえば、間に他のコードを入れて、2つの条件を別々に適用する必要がある場合は、...

var $tags = $("a[href*=tag]");

じゃあ後で ...

var $carTags = $tags.filter(":contains('cars')");

.filter()既存のjQueryの選択を減らすための一般化された方法です。

他の多くのjQueryメソッドと同様.filter()に、jQueryオブジェクトを返すため、チェーンされます。

var $foo = $("a[href*=tag]").filter(":contains('cars')").filter(".myClass");

.filter()私が説明しようとしなかった理由からも良いです、そして@bažmegakapaがとても雄弁にそうしているので私は説明する必要はありません。

于 2013-03-06T23:43:14.853 に答える
4

他の回答は、うまく機能する例を示しています。しかし、ここには興味深い癖があります。ネイティブCSSセレクター(ネイティブでもサポートされていますquerySelectorAll())とjQueryで定義されたセレクターの違いです。

それらを混合することは幸運ではないかもしれません。なぜなら、はるかに高速なネイティブエンジンを使用できないからです。たとえば:has()、jQueryのドキュメントの状態では次のようになります。

:has()はjQuery拡張機能であり、CSS仕様の一部ではないため、:has()を使用したクエリでは、ネイティブDOM querySelectorAll()メソッドによって提供されるパフォーマンスの向上を利用できません。

このため、ネイティブメソッドを使用してクエリを実行してから、jQuery固有のセレクターを使用してフィルタリングすることをお勧めします。

var $res = $("a[href*=tag]").filter(":contains('cars')");
于 2013-03-06T23:47:12.800 に答える