JQuery चयनकर्ताओं में वाइल्डकार्ड


668

मैं उन सभी तत्वों की आईडी प्राप्त करने के लिए वाइल्डकार्ड का उपयोग करने की कोशिश कर रहा हूं जिनकी आईडी "जैंडर" से शुरू होती है। मैंने कोशिश की $('#jander*'), $('#jander%')लेकिन यह काम नहीं करता है ..

मुझे पता है कि मैं इसे हल करने के लिए तत्वों की कक्षाओं का उपयोग कर सकता हूं, लेकिन वाइल्डकार्ड का उपयोग करना भी संभव है ??

<script type="text/javascript">

  var prueba = [];

  $('#jander').each(function () {
    prueba.push($(this).attr('id'));
  });

  alert(prueba);


});

</script>

<div id="jander1"></div>
<div id="jander2"></div>

2
यह jQuery (या अधिक बिल्कुल Sizzle इंजन) के बारे में एक प्रश्न है।
पीटर Marrneholm

1
बस एक नोट: यह वर्गों के साथ करना बहुत तेज़ होगा क्योंकि jQuery या Sizzle ब्राउज़र फ़ंक्शंस का उपयोग कर सकता है (हालांकि आधुनिक ब्राउज़रों के लिए बहुत अंतर नहीं करना चाहिए)।
फेलिक्स क्लिंग


7
इसके अलावा, ध्यान देने वाली एक महत्वपूर्ण बात यह है कि $("[id*=jander]")स्ट्रिंग जेंडर वाले आईडी वाले सभी तत्वों का चयन करना होगा।
गैब्रियल रयान नह्मियास

जवाबों:


1279

"जेंडर" से शुरू होने वाले सभी तत्वों को प्राप्त करने के लिए आपको उपयोग करना चाहिए:

$("[id^=jander]")

उन है कि "जेंडर" के साथ समाप्त करने के लिए

$("[id$=jander]")

JQuery के दस्तावेज़ भी देखें


22
डॉक्स इसका उदाहरण देते हैं:$('input[name^="news"]').val('news here!')
ब्रेंडेन

5
कोड इरादा के अनुसार काम करता है। दोहरे उद्धरण चिह्नों की आवश्यकता नहीं है, यह सिर्फ एक समापन उद्धरण को याद करने की संभावना को बढ़ाता है और इसे कम पठनीय बनाता है।
निको

4
@ एनिको दिलचस्प रूप से पर्याप्त है, डॉक्स का कहना है कि यह विशेषताओं के साथ काम करता है और idतकनीकी रूप से एक संपत्ति है , लेकिन मुझे लगता है कि अधिक हाल के रिलीज के साथ jquery (यानी 1.9) और कैसे विशेषताओं और गुणों के लिए नवीनतम परिवर्तन हैंग किए गए हैं, लाइन थोड़ी धुंधली है दो के संबंध में और इसलिए आपके द्वारा (कम से कम कुछ) गुणों के लिए विशेषता चयनकर्ताओं का उपयोग करने में सक्षम है।
जोंथ्रप्रेन्योर

क्या हुआ अगर, मैं उन चयनित लोगों का भी चयन करना चाहता हूँ। उदाहरण के लिए: मेरे पास वर्तमान में .col-lg-4:even div:nth-child(1)अगर मैं ऐसा ही करना चाहता था .... तो मैं क्या लिखूंगा? "[class^=.col-lg-]:even"? (मैं यह काम करने के लिए प्रतीत नहीं होता)
लुइस रॉबल्स

थोड़ा सा व्यवहार जिसने मुझे आश्चर्यचकित किया ---- अगर मैं इसे "क्लास $ = ..." के साथ उपयोग करता हूं, तो यह किसी आइटम की वर्ग सूची खोजता है, न कि व्यक्तिगत वर्ग के नाम। तो यह केवल हिट करता है यदि उस वर्ग को खोजा जा रहा है जो उस आइटम पर अंतिम वर्ग है। Chrome के अलावा अन्य का परीक्षण नहीं किया गया है। और निश्चित नहीं है कि दोष jQuery में है या jQuery की मेरी अपेक्षाओं में है।
रोजर क्रुएगर

115

चूंकि शीर्षक बताता है कि वाइल्डकार्ड आप भी इसका उपयोग कर सकते हैं:

$(document).ready(function(){
  console.log($('[id*=ander]'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="jander1"></div>
<div id="jander2"></div>

यह दिए गए स्ट्रिंग को कहीं भी चुन लेगा id


39

JQuery के शुरू-साथ प्रयास करें

चयनकर्ता, '^ =', उदा

[id^="jander"]

मुझे हालांकि यह पूछना है कि आप कक्षाओं का उपयोग क्यों नहीं करना चाहते हैं?


2
संदर्भ जोड़ने के लिए, मैं उसी समाधान की तलाश कर रहा हूं क्योंकि मैं Django का उपयोग कर रहा हूं, जिसका ModelForm वर्ग मॉडल के आधार पर आईडी तय करता है, और इस तरह से समूहीकरण करने की अनुमति नहीं देता है; यानी HTML मेरे नियंत्रण से बाहर है।
क्रिश्चियन मान

ASP.Net WebForms, विशेष रूप से रेडियो और चेकबॉक्स सूचियों के साथ काम करते समय यह उपयोगी है।
डेविडसेकर

35

उन कक्षाओं के लिए जिनका आप उपयोग कर सकते हैं:

div[class^="jander"]

मुझे यह काम करने के लिए नहीं मिला, अवैध सिंटैक्स के बारे में एक संदेश मिला।
स्टेन

14

वाइल्डकार्ड मैच से आईडी प्राप्त करने के लिए :

$('[id^=pick_]').click(
  function(event) {

    // Do something with the id # here: 
    alert('Picked: '+ event.target.id.slice(5));

  }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pick_1">moo1</div>
<div id="pick_2">moo2</div>
<div id="pick_3">moo3</div>


2
"Event.target.id" के बजाय यह भी काम कर सकता है: $ (यह) .attr ("id")
PJ ब्रुनेट

10

जब आपके पास अधिक जटिल आईडी स्ट्रिंग होती है तो दोहरे उद्धरण अनिवार्य होते हैं।

उदाहरण के लिए यदि आपके पास एक आईडी id="2.2"है: इसे एक्सेस करने का सही तरीका है:$('input[id="2.2"]')

सुरक्षा कारणों से जितना संभव हो सके दोहरे उद्धरण चिह्नों का उपयोग करें।

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