2013-03-06 18 views
7

私がする必要があるのは、hrefプロパティに "tag"を含み、要素のテキストに特定の単語が含まれているページのすべての要素を見つけることです。例えば複数の条件に一致する要素を見つける方法

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

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

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

私もテキストに「車の持つすべての要素を見つけることができます

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

しかし、これらの2つの条件を以下のような単一のステートメントに組み合わせるにはどうすればよいですか: hrefに 'tag'を含み、テキストに 'cars'を含むすべての要素を見つけますか?

答えて

15

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

あなたはすなわち

$("a.className.anotherClass[href*=tag][title=test]:contains('cars'):visible"); 
+1

は、私はそれを知りませんでした。できます。 – Dmitri

3

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ために必要はありません。非常に雄弁にそのようにしたばかりです。

+0

私が今知っていた別の素敵な機能。 – Dmitri

+0

+1私たちは同じことについて話しているようです:) – kapa

3

その他の回答は、細かいことと実例を示しています。しかし、ここで興味深いのは、native CSS selectors(これはネイティブquerySelectorAll()でもサポートされています)とselectors defined by jQueryの区別です。

それらを混ぜることは幸運ではないかもしれません。なぜなら、はるかに速いネイティブエンジンは使用できないからです。 jQueryの拡張はなく、CSS 明細書の一部である()を有し、使用するクエリ:

ので:jQueryのドキュメントの状態:has()にたとえばたが()によって提供さ パフォーマンス向上の利点を取ることができませんネイティブDOM querySelectorAll() メソッド。

は、このような理由から、あなたは、任意のjQueryの特定のセレクタを使用して、その後 filteringをネイティブメソッドに照会したほうが良いとあります:

var $res = $("a[href*=tag]").filter(":contains('cars')"); 
+1

+1良い説明。すべてのjQuery初心者の読書リストに載っているはずです。 –

関連する問題