Html एलिमेंट खोजें, जो id से शुरू होता है


89

मेरा सवाल यह है:

मेरे पास कई पृष्ठों में HTML कोड है, उनमें से प्रत्येक पर मैंने कुछ डेटा प्रदर्शित करने के लिए एक JQgrid (jquery ग्रिड) का उपयोग किया है। मुझे पता था कि उनमें से प्रत्येक पृष्ठ पर, JQgrid को रखने वाले तत्व को "LIST_xxx" नाम दिया गया है। अब मुझे एक जावास्क्रिप्ट बनाने की आवश्यकता है जो प्रत्येक पृष्ठ पर उस तत्व "LIST_XXXX" को लेता है और कुछ सामान करता है। मैं आईडी द्वारा एक तत्व की खोज कैसे कर सकता हूं लेकिन केवल इसके प्रारंभिक भाग (आईडी का, जैसा कि मैंने पहले उल्लेख किया है) को जानता हूं:

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

मुझे उम्मीद है कि मैंने खुद को स्पष्ट कर दिया है। धन्यवाद।

जवाबों:


170

प्रयत्न

$('div[id^="list_"]')

यह काम करना चाहिए


Jquery प्रलेखन की तुलना में उस संदर्भ में बहुत बेहतर लेआउट।
यूरी फकटोरोविच

यह ठीक काम करता है धन्यवाद ... मैंने इसका उपयोग एक आईडी खोजने के लिए किया है जो विशिष्ट मूल्य के साथ समाप्त होता है जैसे कि ($ (div [id $ = "'+ val +'"]))। लंबाई> 0) कुछ निष्पादित करें;
रफ्फी

अच्छी तरह से, नियंत्रण के ऊपर सरल आईडी के लिए इसकी अच्छी तरह से काम कर रहा है। मैं इस तरह के आईडी "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" इत्यादि के साथ नियंत्रण कर रहा हूं और इस तरह के परिदृश्यों के लिए यह कैसे काम कर सकता हूं, और मुझे आईडी "txt _ * _ _ जैसे सभी ऐसे तत्वों की गिनती चाहिए। ”
राजीव भारद्वाज

@ राजीव अगर आपका html पर नियंत्रण है, तो उन तत्वों में से प्रत्येक में "शहर" की तरह एक वर्ग जोड़ना अच्छा होगा। फिर आप उन्हें आसानी से गिन सकते हैं।
ग्लेन लिटिल

@ राजीव अगर आप html में सुधार नहीं कर सकते हैं, तो api.jquery.com/multiple-attribute-selector देखें - आप चयनकर्ताओं को जोड़ सकते हैं। उदाहरण के लिए, $ ("स्पैन [आईडी ^ = 'txt _'] [आईडी $ = '_ शहर']")
ग्लेन लिटिल

22

आपको चयनकर्ता के साथ शुरू होने वाली विशेषता का उपयोग करने की आवश्यकता है :

$('[id^=list_]').whatever()

अच्छी तरह से, नियंत्रण के ऊपर सरल आईडी के लिए इसकी अच्छी तरह से काम कर रहा है। मैं इस तरह के आईडी "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city" इत्यादि के साथ नियंत्रण कर रहा हूं और इस तरह के परिदृश्यों के लिए यह कैसे काम कर सकता हूं, और मुझे आईडी "txt _ * _ _ जैसे सभी ऐसे तत्वों की गिनती चाहिए। ”
राजीव भारद्वाज

हाय @ राजीव, स्टैकओवरफ्लो में आपका स्वागत है। मैंने आपकी टिप्पणी की दूसरी प्रति पर प्रतिक्रिया दी है।
ग्लेन लिटिल

8

उस तत्व को एक सामान्य श्रेणी का नाम दें या कुछ अन्य विशेषता जिसके लिए आप क्वेरी कर सकते हैं।


नमस्ते, आपके उत्तर के लिए धन्यवाद, आपके सुझाव के साथ समस्या यह है कि JQgrid को पकड़े हुए कई टेबल हो सकते हैं, इसलिए हो सकता है: "LIST_customer", "LIST_carrier" ... और इसी तरह। और मुझे उन दोनों का चयन करने की आवश्यकता है जो केवल प्रारंभिक आईडी भाग पर आधारित हैं: "LIST_"।
लिडर्मिन

1
मैं समझता हूं, लेकिन उन सभी को एक सूची वर्ग बनाना मेरे लिए अधिक पठनीय और वर्णनात्मक दृष्टिकोण की तरह लगता है। प्रत्येक अपने स्वयं के लिए, आप हमेशा चयनकर्ता के साथ शुरुआत में उपयोग कर सकते हैं जैसा कि अन्य उत्तरों द्वारा दिखाया गया है।
यूरी फकटोरोविच

@lidermin यूरी का कहना है कि काम करना चाहिए। जब से आप अपने उपसर्ग के रूप में list_ के रूप में "सूची" के रूप में अपने नियंत्रण के लिए एक वर्ग क्यों नहीं जोड़ते हैं। इसलिए जब आप उस वर्ग का चयन करते हैं तो यह उन सभी नियंत्रणों को प्राप्त करेगा। यह इसे करने का सबसे कुशल तरीका होगा।
जोश मीन

यूरी का जवाब काम करेगा। आप अपने सभी "LIST_XXXX" तत्वों में एक ही वर्ग (उदाहरण के लिए "ListsINeedToFind") जोड़ सकते हैं, और फिर उनका उपयोग करके देख सकते हैं $('.ListsINeedToFind')
एनाबेले

कभी-कभी एक ही वर्ग लेकिन अलग-अलग आईडी के साथ कई तत्व होना आवश्यक है।
विंसेंट

5

"विशेषता के साथ शुरू होता है" चयनकर्ता http://api.jquery.com/attribute-starts-with-selector/ का उपयोग करें

$("[id^=list_]")

विदित हो कि यह अक्षम्य है। टैग नाम के साथ उपसर्ग और यदि संभव हो तो निकटतम माता-पिता से उतरना।


1

एक निश्चित आईडी / चरित्र के साथ एक तत्व को समाप्त करने के लिए

find('[id$=someid]')

एक निश्चित आईडी / चरित्र के साथ एक तत्व शुरू करने के लिए

find('[id*=anotherid]')

एक निश्चित आईडी / चरित्र के साथ एक तत्व मिलान करने के लिए

find('[id^=id]')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.