2013-03-06 9 views
7

मुझे क्या करना है पृष्ठ पर सभी तत्वों को ढूंढें जिनमें href संपत्ति में "टैग" होता है और तत्व के पाठ में कुछ शब्द होता है।कई स्थितियों से मेल खाने वाले तत्वों को कैसे ढूंढें

उदाहरण के लिए

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

मैं जानता हूँ कि मैं इस तरह href में टैग के साथ सभी एक तत्व प्राप्त कर सकते हैं:

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

मैं भी पाठ में 'कार' के साथ सभी एक तत्व प्राप्त कर सकते हैं इस तरह:

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

लेकिन मैं इन 2 स्थितियों को एक ही कथन में कैसे जोड़ूं जो कहता है: सभी तत्वों को खोजें जिनमें href में 'टैग' है और टेक्स्ट में 'कार' है?

उत्तर

15

क्या आपने $("a[href*=tag]:contains('cars')"); को आजमाया है?

आप पर और पर हमेशा के लिए इस तरह

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

मुझे लगता है कि पता नहीं था। यह काम करता हैं। – Dmitri

3

दो शर्तें अलग उदाहरण के लिए के बीच में कुछ अन्य कोड के साथ, लागू किया जाना चाहिए तो जा सकते हैं, यानी के रूप में अन्य लोगों ने कहा कि या,,। ..

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 के बीच भेद भी है।

उन्हें मिलाकर भाग्यशाली नहीं हो सकता है, क्योंकि तब बहुत तेज देशी इंजन का उपयोग नहीं किया जा सकता है।

क्योंकि: :has() jQuery डॉक्स स्थिति पर उदाहरण के लिए (है) एक jQuery विस्तार और सीएसएस विनिर्देशन का हिस्सा नहीं, प्रश्नों का उपयोग कर रहा है: (है) प्रदर्शन द्वारा प्रदान को बढ़ावा देने का लाभ नहीं ले जा सकते हैं देशी डोम क्वेरी चयनकर्ता सभी() विधि।

इस कारण से, आप दूर देशी विधि के द्वारा क्वेरी filtering किसी भी jQuery विशिष्ट चयनकर्ताओं का उपयोग करके बेहतर और फिर हो सकता है:

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

+1 अच्छा स्पष्टीकरण। प्रत्येक jQuery नौसिखिया की पढ़ने की सूची पर होना चाहिए। –

संबंधित मुद्दे