2013-03-06 21 views
7

Yapmam gereken şey, href özelliğinde "etiket" ibaresi bulunan ve öğenin metninin belirli bir sözcük içerdiği sayfasındaki tüm öğeleri bulmaktır. ÖrneğinBirden çok koşulu eşleştiren öğeler nasıl bulunur?

ben böyle href etiketi ile tüm öğelerini almak biliyorum

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

:

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

ayrıca metnin içinde 'otomobil' ile tüm unsurları bulabilirsiniz böyle:

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

Ama tek deyimi içine bu 2 koşulları birleştirmek nasıl söylüyor: Href'te 'tag' içeren ve metinde 'cars' yazan tüm öğeleri bulun.

cevap

15

$("a[href*=tag]:contains('cars')");'u denediniz mi? iki koşul örneğin arasındaki diğer bazı kod ile ayrı ayrı uygulanması gerekir eğer

Daha sonra, diğer çocuklar dediği gibi yani sonsuza uzayıp

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

Bunu bilmiyordum. işe yarıyor. – Dmitri

3

bu şekilde ya da yükselebilir. ..

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

daha sonra ...

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

.filter() genelleştirilmiş olduğunu Mevcut bir jQuery seçimini azaltmak için yöntem. Bir jQuery nesnesi döndüren .filter() diğer birçok jQuery yöntemlerle gibi

yüzden olacak zinciri:

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

.filter() da Açıklamaya ilgili değildi nedenlerle iyi ve ben @ bažmegakapa çünkü gerek yok sadece çok eloksal yaptı.

+0

Şimdi bildiğim bir başka güzel özellik.Aynı şeyden :) – Dmitri

+0

1 görünüyor. Her jQuery kullanıcısının okuma listesinde olması gerekir. – kapa

3

Diğer cevaplar iyi ve çalışma örneklerini gösterir. Ama burada ilginç bir tuhaflık var, native CSS selectors arasındaki fark (aynı zamanda yerel querySelectorAll() tarafından destekleniyor) ve selectors defined by jQuery.

Bunları karıştırmak şanslı olmayabilir, çünkü daha hızlı olan yerel motor kullanılamaz.

Çünkü: :has() jQuery dokümanlar devlet üzerindeki Örneğin) (sahip bir jQuery uzantısı ve CSS şartname parçası değil, sorgular kullanıyor: sağladığı performans artışı yararlanmak olamaz) (vardır yerel DOM querySelectorAll() yöntemi.

Bu nedenle, herhangi bir jQuery belirli seçicileri kullanarak daha sonra filtering yerli yöntemle sorgulama kapalı daha iyi ve belki:

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

1 Güzel açıklama bahsediyoruz gibi –

İlgili konular