2010-03-02 19 views
149

मैं इस तत्व है जो नाम विशेषता में वर्ग कोष्ठक है का चयन करने के कोशिश कर रहा हूँ:jQuery चयनकर्ता

<input type="text" name="inputName[]" value="someValue"> 

मैं कोशिश की है इस (जो काम नहीं करता है) :

$('input[inputName[]=someValue]') 

और न करता यह:

$('input[inputName&#91;&#93;=someValue]') 

या इस:

$('input["inputName[]"=someValue]') 

संपादित करें: के रूप में आप में से कुछ ने बताया है, $('input[inputName=someValue]') काम कभी नहीं होगा। मैं जो करने की कोशिश कर रहा था वह था: $('input[name=inputName][value=someValue]')। (लेकिन नाम विशेषता में [] के साथ)।

+4

@ मैरलीन, हाँ, हालांकि मैंने आपके प्रश्न का उल्लेख करने से लगभग एक साल पहले इस प्रश्न से पूछा था। – aidan

उत्तर

215

प्रति jQuery documentation, इस प्रयास करें। आप शायद चाहते हैं: चयनकर्ता एक चर के भीतर निहित है

$('input[name="inputName[]"][value="someValue"]') 
+25

अच्छा पकड़ो। दो बैकस्लाश की आवश्यकता का कारण यह है कि एक बैकस्लैश को जावास्क्रिप्ट स्ट्रिंग एस्केप कैरेक्टर के रूप में व्याख्या किया जाता है, इसलिए आपको दो अक्षर की बैकस्लैश निर्दिष्ट करने की आवश्यकता होती है, जो चयनकर्ता को बचने वाला चरित्र प्रदान करता है ... आह, चरित्र के कई स्तरों की खुशी भागने। – Peter

+0

यह गम्बो का जवाब नीचे पागल है। डबल भागना .. नहीं धन्यवाद! –

+0

आपको धन्यवाद !! वास्तव में मुझे क्या चाहिए। –

47

विशेषता चयनकर्ता वाक्यविन्यास [name=value] है जहां name विशेषता का नाम है और value विशेषता मान है।

तो अगर आप विशेषता name मूल्य inputName[] होने के साथ सभी input तत्वों का चयन करना चाहते:

$('input[name="inputName[]"][value=someValue]') 
:

$('input[name="inputName[]"]') 

और तुम दो विशेषताएं (: name और value यहाँ) के लिए जाँच करना चाहते हैं

+2

यह बैकलाश से बचने के मुकाबले बहुत अच्छा है, और मैं पुष्टि कर सकता हूं कि यह क्रोम 9 और आईई 6 पर काम करता है। यहां JQuery संस्करण 1.4.4 – pablobm

+0

है यह उत्तर जोड़ने के लिए धन्यवाद!चयनकर्ताओं को गतिशील रूप से निर्माण करते समय उद्धरण का उपयोग बचने के समाधान से अधिक व्यावहारिक है। – octern

+0

मेरे लिए 1.8.3 में अच्छा काम करता है। –

70

आप अपने jQuery चयनकर्ताओं में "हास्यास्पद" वर्ण उद्धृत करने के लिए बैकस्लैश का उपयोग कर सकते हैं:

$('#input\\[23\\]') 

उद्धरण विशेषता मान के लिए, आप उपयोग कर सकते हैं:

$('input[name="weirdName[23]"]') 

अब, मैं थोड़ा भ्रमित कर रहा हूँ अपने उदाहरण से; आपका एचटीएमएल कैसा दिखता है? स्ट्रिंग "इनपुट नाम" कहां दिखाता है, विशेष रूप से?

संपादित निश्चित बोगोसिटी; हालांकि, मुझे यकीन है कि अपने चयनकर्ता लिए सही सिंटैक्स है नहीं कर रहा हूँ

$('input[inputName\\[\\]=someValue]') 

[संपादित करें] : धन्यवाद @Dancrumb

+3

jQuery प्रलेखन यह निर्धारित करता है कि भागने के लिए दो बैकस्लाश की आवश्यकता है। – Dancrumb

+2

ओह durr आप सही हैं - यह jQuery के लिए इतना नहीं है, लेकिन क्योंकि जावास्क्रिप्ट एकल को अलग करेगा! धन्यवाद। – Pointy

+0

ने – Dancrumb

4

तो नीचे दिए गए कोड से सहायता मिलेगी:

selector_name = $this.attr('name'); 
//selector_name = users[0][first:name] 

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1'); 
//escaped_selector_name = users\\[0\\]\\[first\\:name\\] 

इस मामले हम डबल बैकस्लैश के साथ सभी विशेष वर्ण के आरंभ में लगा।

+1

selector.replace (/ (\ [| \])/g, '\\\\ $ 1'); मेरे लिए थोड़ा बेहतर काम किया क्योंकि यह बच निकले हुए स्लेश जोड़ता है और दो उत्पादन करता है, एक भी बचने वाला स्लैश नहीं ... – Fydo

+1

यह सिर्फ मुझे पूरी तरह से झुका हुआ है! धन्यवाद!! –

+0

@ फीडो बस याद रखें कि आपको कुछ अन्य पात्रों से बचने की भी आवश्यकता है जिनमें कॉलन, अवधि भी शामिल है –

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