jQuery का चयनकर्ता: Id किसके साथ समाप्त होती है?


393

क्या कोई ऐसा है selectorजो मैं एक आईडी के साथ तत्वों के लिए क्वेरी कर सकता हूं जो किसी दिए गए स्ट्रिंग के साथ समाप्त होता है?

कहो कि मेरे पास एक आईडी है ctl00$ContentBody$txtTitle। सिर्फ पास होने से मैं यह कैसे प्राप्त कर सकता हूं txtTitle?


16
अच्छे पुराने मास्टर पेज आईडी मैनलिंग!
मैथ्यू लॉक

1
ClientIDMode=staticASP.Net 4.0 पर से सेट करें और इससे छुटकारा पाएं :)
मुरली मुरुगेसन

1
ClientIDMode = स्थैतिक पुनरावर्तक में एक तत्व खोजने की कोशिश करने वालों के लिए काम नहीं करेगा!
स्टुअर्ट

जवाबों:


629

यदि आप तत्व प्रकार जानते हैं तो: (जैसे: 'तत्व' को 'div' से बदलें)

$("element[id$='txtTitle']")

यदि आप तत्व प्रकार नहीं जानते हैं:

$("[id$='txtTitle']")

अधिक जानकारी उपलब्ध है



10
मैं इसे '$ txtTitle' के साथ समाप्त करूंगा। इसके साथ एक जोखिम के रूप में ज्यादा नहीं है 'txt' उपसर्ग, लेकिन अगर आप चयनकर्ता 'NameTextBox' है, यह 'NameTextBox', 'FirstNameTextBox', LastNameTextBox ', आदि से मेल खाएंगे
मार्क

11
एक अनाम उपयोगकर्ता ने केवल निम्नलिखित को संपादित करने की कोशिश की। इसे टिप्पणी के रूप में जोड़ना (जैसा कि यह समझ में आता है): यह आईडी txtTitle के साथ समाप्त होने वाले तत्वों को नहीं देता है। यहाँ डॉक्स है: api.jquery.com/element-selector..element चयनकर्ता getElementsByTagName के बराबर है। इसे तत्व की आईडी से कोई लेना देना नहीं है। यदि आप आईडी के साथ समाप्त होने वाले तत्वों का उपयोग करना चाहते हैं, तो इस सिंटैक्स $ का उपयोग करें ("[आईडी $ = 'txtTitle']") या यदि आप तत्व के प्रकार को जानते हैं .. तो div .. तब इस सिंटैक्स $ ("div" का उपयोग करें [आईडी $ = 'txtTitle'] ")
पक्के

1
लिंक बहुत उपयोगी था। इस पृष्ठ को स्वयं नहीं, लेकिन यह 2 अतिरिक्त पृष्ठों में बंद हो गया, जिनकी मुझे आवश्यकता थी। मैंने सीखा कि किसी शीर्षक के सेगमेंट को कैसे कैप्चर किया जाए, जैसे कि व्यू सोर्स में "MasterPage1_Control0_MyTableName_moreStuff" के रूप में ID दिखती है, मैं <asp: टेबल ID = "MyTable" ... $ ("आईडी" का उपयोग करके) की मेरी टेबल पर लॉक कर सकता हूं = MyTable] ")। यह सोचने के लिए आओ, मुझे आईडी $ बेहतर पसंद है। हम्मम ...
लुकास

यह तत्व पाता है document.getElementById("f:fTest:j_idt51:0:inpTest")। ऐसा नहीं होता है $("[id$='inpTest']")। क्या ऐसा इसलिए है क्योंकि आईडी में कोलन की अनुमति नहीं है (लेकिन JSF इसे जोड़ता है!)।
पानू हैरमो

क्या सीएसएस के साथ इस चयनकर्ता का उपयोग करने का एक तरीका है, जैसे कि छद्म चयनकर्ता?
अलेजांद्रो नवा

250

प्रश्न का उत्तर है $("[id$='txtTitle']"), जैसा कि मार्क हर्ड ने उत्तर दिया था , लेकिन उन लोगों के लिए, जो मेरी तरह, एक आईडी के साथ सभी तत्वों को ढूंढना चाहते हैं, जो किसी दिए गए स्ट्रिंग के साथ शुरू होता है (उदाहरण के लिए txtTitle), यह प्रयास करें ( डॉक्टर ):

$("[id^='txtTitle']")

यदि आप उन तत्वों का चयन करना चाहते हैं जिनमें आईडी में दिए गए स्ट्रिंग ( डॉक्टर ) हैं:

$("[id*='txtTitle']")

आप तत्व है जो आईडी का चयन करना चाहते हैं नहीं है एक दिया स्ट्रिंग ( डॉक ):

$("[id!='myValue']")

(यह उन तत्वों से भी मेल खाता है जिनके पास निर्दिष्ट विशेषता नहीं है)

यदि आप उन तत्वों का चयन करना चाहते हैं जिनमें आईडी में दिए गए शब्द हैं, तो रिक्त स्थान ( डॉक्टर ) द्वारा सीमांकित किया गया है :

$("[id~='myValue']")

यदि आप ऐसे तत्वों का चयन करना चाहते हैं जो आईडी दिए गए स्ट्रिंग के बराबर है या उस स्ट्रिंग से शुरू करना है जिसके बाद एक हाइफ़न ( डॉक्टर ) है:

$("[id|='myValue']")

यदि आप उस प्रश्न को जोड़ते हैं जो वास्तव में प्रश्न का उत्तर देता है अर्थात $ ("[id $ = 'txtTitle']") और इसे पहले सूची में डालूँगा, तो मैं आपके उत्तर को वोट करूँगा। मैं इस समय नहीं कर सकता क्योंकि आप इस सवाल का जवाब नहीं देते हैं
एलन मैकडोनाल्ड 16

2
@AlanMacdonald मुझे यकीन नहीं है कि इसे जोड़ना सही है। मैंने उत्तर को स्वीकार करने के काफी समय बाद सवाल का जवाब दिया, बस आगंतुकों के लिए और अधिक जानकारी जोड़ने के लिए। मुझे उम्मीद है कि जो लोग मेरे जवाब को बढ़ाते हैं, वे सवाल के जवाब को भी उभारते हैं।
रोमेन गाइडॉउक्स

1
@RomainGuidoux काफी हद तक यह आपकी कॉल है, लेकिन मैं उन उत्तरों को नहीं बढ़ाता, जो पूछे गए सवाल का हल नहीं देते, क्योंकि यह स्पष्ट नहीं है कि ओपी के रूप में एक ही समस्या का सामना करना पड़ रहा है यदि वे पृष्ठ पर आते हैं और एक अप है मतदान का जवाब है कि सवाल का जवाब भी नहीं है। यदि आपने इसे उस प्रश्न का उत्तर देने के लिए बदल दिया है तो मैं स्वीकृत उत्तर के बजाय आपके उत्तर को समाप्त कर दूंगा क्योंकि यह पूर्ण और अधिक उपयोगी उत्तर है। ईथर या यह प्रश्न के उत्तर के बजाय स्वीकृत उत्तर पर एक टिप्पणी होनी चाहिए।
एलन मैकडोनाल्ड

1
@AlanMacdonald संपन्न, आपने मुझे आश्वस्त किया।
रोमेन गाइडॉक्स

33

प्रयत्न

$("element[id$='txtTitle']");

संपादित करें: 4 सेकंड देर से: पी


32
$('element[id$=txtTitle]')

आपके द्वारा मिलान किए जा रहे पाठ के टुकड़े को उद्धृत करना कड़ाई से आवश्यक नहीं है


2
यह सही उत्तर होना चाहिए! "और 'का उपयोग करना केवल भ्रामक है।
Kees C. Bakker

13

आपके द्वारा खोजे जा रहे शब्द को अंडरस्कोर या $ जोड़ना अधिक सुरक्षित है, इसलिए यह अन्य तत्वों से मेल खाने की संभावना कम है जो एक ही आईडी में समाप्त होते हैं:

$("element[id$=_txtTitle]")

(जहां तत्व वह तत्व है जिसे आप खोजने की कोशिश कर रहे हैं - जैसे div, inputआदि।

(ध्यान दें, आप सुझाव दे रहे हैं कि आपकी आईडी में $ साइन हैं, लेकिन मुझे लगता है कि .NET 2 अब इसके बजाय ID में अंडरस्कोर का उपयोग करने के लिए जाता है, इसलिए मेरा उदाहरण एक अंडरस्कोर का उपयोग करता है)।


1
हाँ आप सही है। आईडी संपत्ति अंडरस्कोर का उपयोग करता है। नाम संपत्ति डॉलर चिह्न का उपयोग करती है।
जोश स्टोडोला

3

एक उदाहरण: <a>_edit में आईडी समाप्त होने के साथ सभी का चयन करने के लिए :

jQuery("a[id$=_edit]")

या

jQuery("a[id$='_edit']")

3

चूंकि यह ASP.NET है, आप केवल txtTitle के जेनरेट किए गए ClientID को प्रिंट करने के लिए ASP <% =%> टैग का उपयोग कर सकते हैं:

$('<%= txtTitle.ClientID %>')

यह परिणाम होगा ...

$('ctl00$ContentBody$txtTitle')

... जब पृष्ठ प्रदान किया जाता है।

नोट: विज़ुअल स्टूडियो में, Intellisense जावास्क्रिप्ट टैग में ASP टैग लगाने के लिए आप पर चिल्लाएगा। परिणाम को मान्य JavaScript के रूप में आप इसे अनदेखा कर सकते हैं।


4
ओपी के पास नहीं है 'ctl00$ContentBody$txtTitle', उसके पास है 'txtTitle', और आप #एक आईडी से मिलान करने के लिए अग्रणी को याद नहीं कर रहे हैं । लेकिन ओपी ने पहले ही एक समान सुझाव (हटाए जाने के बाद से) को अस्वीकार कर दिया है: यह तब तक काम नहीं करेगा जब तक मैं अपने जावास्क्रिप्ट को सीधे मार्कअप में नहीं डाल देता, जो एक संगठनात्मक दुःस्वप्न है। इस परियोजना के लिए व्यवहारिक अलगाव महत्वपूर्ण है।
मार्टिन पीटर्स

1

इसे इस्तेमाल करे:

<asp:HiddenField ID="0858674_h" Value="0" runat="server" />

var test = $(this).find('[id*="_h"').val();

0

कई आइफ्रेम वाले पृष्ठ के भीतर "iFrame" के साथ समाप्त होने वाली एक आइफ्रेम आईडी खोजने के लिए।

jQuery(document).ready(function (){     
                  jQuery("iframe").each(function(){                     
                    if( jQuery(this).attr('id').match(/_iFrame/) ) {
                            alert(jQuery(this).attr('id'));

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