2010-02-12 9 views
83

jQuery के पास निम्न कथन के बराबर आईडी क्या है?jQuery निर्धारित करें कि किसी मिलान किए गए वर्ग में कोई आईडी आईडी है

$('#mydiv').hasClass('foo') 

ताकि आप कक्षा का नाम दे सकें और जांच सकें कि इसमें एक आपूर्ति आईडी है।

कुछ की तरह:

$('.mydiv').hasId('foo') 
+0

के लिए इस विधि का उपयोग मैं एक निश्चित div शैली लागू करना चाहते हैं। उदाहरण के लिए लोड समय पर सभी को foo के वर्ग के साथ दिखाया जाएगा, लेकिन मैं कक्षा foo के एक उदाहरण को टॉगल करना चाहता हूं जिसमें बार की आईडी है। –

+1

तो आप बस '$ ('# bar.foo') करेंगे। टॉगल(); 'आपके पास केवल एक आईडी होगी क्योंकि उन्हें दस्तावेज़ के लिए अद्वितीय होने की आवश्यकता है। यदि आप केवल उस आईडी को टॉगल करने के लिए चींटी करते हैं, यदि यह वर्ग 'foo' है तो बस आईडी चयनकर्ता को कक्षा जोड़ें। यदि चयनकर्ता को एक खाली सेट मिल जाता है तो कुछ नहीं होगा, अगर इसे परिणाम के साथ एक सेट मिल जाए (जिसमें से केवल एक ही होगा) तो यह तत्व टॉगल करेगा। मुझे लगता है कि आप इस पर विचार कर रहे हैं। – prodigitalson

+0

हां, ज़ाहिर है धन्यवाद। –

उत्तर

135

आप उस तर्क को combining multiple selectors द्वारा चयनकर्ता में सेंक सकते हैं। उदाहरण के लिए, हम किसी दिए गए आईडी के साथ सभी तत्वों को लक्ष्य बना सकते हैं, वह भी एक विशेष वर्ग है:

$("#foo.bar"); // Matches <div id="foo" class="bar"> 

यह कुछ आप सीएसएस में लिखने वैसी ही दिखना चाहिए। ध्यान दें कि यह सभी #foo तत्वों पर लागू नहीं होगा (हालांकि वहां केवल एक होना चाहिए), और यह सभी .bar तत्वों पर लागू नहीं होगा (हालांकि कई हो सकते हैं)। यह केवल उन तत्वों का संदर्भ देगा जो दोनों विशेषताओं पर अर्हता प्राप्त करते हैं।

jQuery में भी एक शानदार .is method है जो यह निर्धारित करने देता है कि किसी तत्व के पास कुछ गुण हैं या नहीं। आप एक स्ट्रिंग चयनकर्ता, एक HTML तत्व, या किसी अन्य jQuery ऑब्जेक्ट के विरुद्ध एक jQuery संग्रह का परीक्षण कर सकते हैं। इस मामले में, हम सिर्फ यह एक स्ट्रिंग चयनकर्ता के खिलाफ जांच करेंगे:

$(".bar:first").is("#foo"); // TRUE if first '.bar' in document is also '#foo' 
+22

+1। '.hasId()' चयनकर्ता होना चाहिए क्योंकि यह '.hasClass()' वास्तव में ... –

39

मैं शायद $('.mydiv').is('#foo'); कहा कि अगर आप क्रमांक पता का प्रयोग करेंगे क्यों तुम सिर्फ पहली जगह में चयनकर्ता पर लागू होगा?

+17

दोहराने की कोशिश नहीं कर रहा हूं शायद कोड एक कॉलबैक फ़ंक्शन में जा रहा है जिसे एक निश्चित मामले को अलग-अलग संभालने की आवश्यकता है। इसलिए, फ़ंक्शन अज्ञात विशेषताओं के साथ स्वचालित रूप से एक jQuery ऑब्जेक्ट पास कर दिया जाता है। इस मामले में, $ ('आपका उत्तर') है। ('सहायक') है; –

+1

मैं किसी भी कारण से सोच सकता हूं। यदि आप मोबाइल विशिष्ट सेटिंग को लागू करना चाहते हैं, तो क्या होगा यदि किसी तत्व में आईडी = "मोबाइल" है। क्यों महत्वपूर्ण नहीं है। – Placeable

+0

अच्छी तरह से केवल 1 तत्व को कभी भी 'आईडी' होना चाहिए अन्यथा यह कुछ अन्य विशेषता होनी चाहिए ... मुझे लगता है कि प्रश्न में तत्व के संरचनात्मक स्थान पृष्ठ या क्लाइंट/उपयोगकर्ता-एजेंट के आधार पर बदलते हैं तो ठीक है, लेकिन अन्य उस से ... – prodigitalson

4
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ }); 
+0

प्रत्येक अनियंत्रित है क्योंकि कभी भी एक से अधिक # # मिस्ट्री आईडी नहीं होगा। – prodigitalson

+2

वैसे यह आपको एक वैरिएबल को असाइन करने की परेशानी बचाता है, यह देखने के लिए जांच कर रहा है कि लंबाई खाली नहीं है, और फिर कोड के साथ आगे बढ़ रहा है। यदि चयनकर्ता कुछ भी jQuery से मेल नहीं खाता है तो बस "प्रत्येक" फ़ंक्शन को कॉल नहीं करेगा, इसलिए यह अच्छा और साफ है। अब अगर आप कुछ करना चाहते हैं तो कुछ jQuery एपीआई कॉल करें, फिर सुनिश्चित करें। 'है() 'के लिए – Pointy

4

बस मैं अंत में इस सूचकांक का उपयोग कर हल कहने के लिए()।

कुछ और काम नहीं लग रहा था।

तो भाई तत्वों के लिए यह एक अच्छा काम है यदि आप पहले एक सामान्य वर्ग द्वारा चयन कर रहे हैं और फिर प्रत्येक विशिष्ट के लिए कुछ अलग-अलग संशोधित करना चाहते हैं।

संपादित करें: जो लोग नहीं जानते (जैसे मेरे) इंडेक्स() उन तत्वों के लिए सूचकांक मान देता है जो चयनकर्ता से मेल खाते हैं, जो 0 से गिनती करते हैं, डीओएम में उनके आदेश के आधार पर। जब तक आप जानते हैं कि कक्षा = "foo" के साथ कितने तत्व हैं, आपको किसी आईडी की आवश्यकता नहीं है।

जाहिर है यह हमेशा मदद नहीं करेगा, लेकिन किसी को यह उपयोगी लगेगा।

7

कहते हैं कि तुम कुछ डोम वस्तुओं के माध्यम से पुनरावृत्ति कर रहे हैं और पाते हैं और एक निश्चित आईडी

<div id="myDiv"> 
    <div id="fo"><div> 
    <div id="bar"><div> 
</div> 

आप या तो कुछ लिख सकते हैं के साथ एक तत्व पकड़ करना चाहते हैं प्राप्त करना चाहते

$('#myDiv').find('#bar') 

ध्यान दें कि यदि आप कक्षा चयनकर्ता का उपयोग करना चाहते हैं, तो खोज विधि सभी मिलान करने वाले तत्वों को वापस कर देगी।

या आप एक बार दोहराना समारोह है कि अधिक उन्नत कार्य

<div id="myDiv"> 
    <div id="fo"><div> 
    <div id="bar"><div> 
    <div id="fo1"><div> 
    <div id="bar1"><div> 
    <div id="fo2"><div> 
    <div id="bar2"><div> 
</div> 

$('#myDiv div').each(function() { 
    if($(this).attr('id') == 'bar1') 
     //do something with bar1 
}); 

एक ही कोड क्या करेंगे लिख सकता है आसानी से वर्ग चयनकर्ता के लिए संशोधित किया जा सकता है।

<div id="myDiv"> 
    <div class="fo"><div> 
    <div class="bar"><div> 
    <div class="fo"><div> 
    <div class="bar"><div> 
    <div class="fo"><div> 
    <div class="bar"><div> 
</div> 

$('#myDiv div').each(function() { 
    if($(this).hasClass('bar')) 
     //do something with bar 
}); 

मुझे खुशी है कि आप सूचकांक के साथ आपकी समस्या को हल कर रहा हूँ(), जो भी काम करता है हूं.मैं आशा के लिए यह एक ही समस्या के साथ दूसरों की मदद करेगा। चीयर्स :)

17

मैं अपने पुराने सवाल पता लेकिन यह अभी भी गूगल परिणाम पर शीर्ष, पर नए jQuery प्रदान .has() समारोह

$('.mydiv').has('#foo') 
+5

क्षमा करें, लेकिन मुझे लगता है कि आपने प्रश्न का गलत व्याख्या किया है: [है() API] (http://api.jquery.com/has/) इसकी रिपोर्ट करता है: उन मिलान करने वाले तत्वों के सेट को कम करें जिनके पास * वंश * है जो चयनकर्ता या DOM तत्व से मेल खाता है। ओपी यह पूछने के लिए कह रहा है कि कक्षा 'myDiv' के साथ तत्व आईडी आईडी भी है, जबकि() आईडी 'foo' वाले 'myDiv' के वंशजों की तलाश करेगा। – Tilt

3

चेक अगर एलीमेंट आईडी मौजूद है

if ($('#id').attr('id') == 'id') 
 
{ 
 
    //OK 
 
}

-1

आप यह भी जांच सकते हैं कि आईडी तत्व का उपयोग करके ऐसा किया जाता है:

if(typeof $(.div).attr('id') == undefined){ 
    //element has no id 
} else { 
    //element has id selector 
} 

मैं वैश्विक DataTables और विशिष्ट आदेश दिया DataTables

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