2009-02-27 12 views
14

मान लें कि मुझे एक डोम तत्व मिला है - मैं कैसे बता सकता हूं कि यह एक jQuery चयनकर्ता से मेल खाता है, जैसे कि p या .myclass? तत्व के बच्चों से मेल खाने के लिए चयनकर्ता का उपयोग करना आसान है, लेकिन मुझे यह विशेष तत्व मिलान करने के लिए एक सही/गलत जवाब चाहिए?मैं कैसे बता सकता हूं कि कोई तत्व चयनकर्ता से मेल खाता है या नहीं?

तत्व में आईडी नहीं हो सकती है (और मैं इसे इसके कारणों के लिए यादृच्छिक नहीं दे सकता), इसलिए मैं अपने चयनकर्ता को तत्व के माता-पिता पर लागू नहीं कर सकता और मेरे जैसा आईडी के साथ बच्चों की तलाश नहीं कर सकता ।

क्या यह कार्य इरादा के रूप में होगा? मैं जावास्क्रिप्ट ऑब्जेक्ट तुलना को समझ नहीं सकता।

$(selector, myElement.parentNode).each({ 
    if (this == myElement) // Found it 
}); 

लगता है जैसे वहाँ एक डोम तत्व एक jQuery चयनकर्ता से मेल खाता है कि क्या देखने के लिए एक आसान तरीका होगा ...

+0

की डुप्लीकेट - https://stackoverflow.com/q/3304638/104380 – vsync

उत्तर

32

आप is() विधि का उपयोग कर सकते हैं:

if($(this).is("p")){ 
// ... 
} 
+1

लेकिन करता है इस तरह काम करते हो? '$ (यह) .is (" body.content p ") 'मुझे इस तरह की कुछ आवश्यकता होगी – Luke

+0

पहले चयनकर्ता को निष्पादित क्यों न करें, फिर परीक्षण करें यदि तत्व परिणाम में है ... – jahroy

+0

@Luke यह काम करता है कि हाँ। –

3

मेरा मानना ​​है कि is() विधि वह है जिसे आप ढूंढ रहे हैं।

अन्यथा, यदि आप यही चाहते हैं तो आप केवल आइटम का चयन करने का प्रयास कर सकते हैं।

इसलिए यह एक "एक" "MyClass" के एक वर्ग, सिर्फ $ ("a.myclass") कर साथ

1

मैं अपने चयनकर्ता तत्व के पेरेंट के लिए लागू नहीं कर सकते हैं और देखने के लिए अगर मेरे जैसे ही आईडी के साथ बच्चे।

आप वैसे भी ऐसा नहीं कर सकते - id विशेषता अद्वितीय होना चाहिए।

0

हो सकता है कि तुम सिर्फ हैं:

$(".complicated #selector p.with > div.manyParts").length 

कोई मिलान नज़र नहीं हैं, तो लंबाई रिटर्न 0, जो, falsy है, तो आप एक if बयान में इसका इस्तेमाल कर सकते हैं जैसे:

if($(".doesThis #exist").length) { 
    // Do things 
} 

शायद एक अलग चर में संग्रहीत करने के लायक होगा और फिर लंबाई की जांच; इस तरह, यदि आपको मिलान किए गए तत्वों के साथ कुछ भी करने की ज़रूरत है, तो आपको उसी चयनकर्ता को फिर से निष्पादित करने की आवश्यकता नहीं है।

0

jQuery के बिना, Element.matches() का उपयोग कर:

// lets define 2 variables pointing to ordinary <div> elements 
 
var elm1 = document.querySelector('div'); 
 
var elm2 = elm1.nextElementSibling; 
 

 
console.log(
 
    elm1.matches('.foo'),   // true 
 
    elm1.matches('.bar'),   // false 
 
    elm2.matches('[title=bar]'), // true 
 
)
<div class='foo'></div> 
 
<div title='bar'></div>


See supported browsers list

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

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