2012-03-29 13 views
104

संभव डुप्लिकेट:
How to select html nodes by ID with jquery when the id contains a dot?आईडी चयनकर्ता में jQuery डॉट?

मैं एक वेबसाइट है कि इस के समान तत्व शामिल होते हैं:

<p id="root.SomeCoolThing">Some Cool Thing</p> 

मैं $('#root.SomeCoolThing') तरह jQuery के साथ पैरा चयन नहीं कर सकते क्योंकि jQuery लगता है, SomeCoolThingid="root" के साथ तत्व का वर्ग है।

मैं jQuery के साथ इस तत्व का चयन कैसे कर सकता हूं?

$(document.getElementById('root.SomeCoolThing')) 
+0

http://stackoverflow.com/questions/605630/how-to-select-html-nodes-by-id-with-jquery-when-the-id-contains-a-dot – David

+0

वहाँ हालांकि डबल '\\\' के साथ एक समाधान है। आईडी के अंदर एक बिंदु क्यों डालें? – gdoron

+0

ठीक है, वेबसाइट मुझसे नहीं बनाई गई है। मुझे आईडी-नाम पसंद नहीं है। यह, अधिक सटीक, एक एपीआई दस्तावेज है। –

उत्तर

194

jQuery selectors API से बचने नियमों का उपयोग करें इस प्रकार है::

$('#root\\.SomeCoolThing') 

docs से:

के किसी भी उपयोग करने के लिए मैं इस तरह के निर्माण से बचने के लिए चाहते हैं मेटा-कैरेक्टर (जैसे कि !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~) किसी नाम के शाब्दिक भाग के रूप में, इसेहोना चाहिएदो बैकस्लाश के साथ भाग गए: \\। उदाहरण के लिए, id="foo.bar" वाला तत्व, चयनकर्ता $("#foo\\.bar") का उपयोग कर सकता है।

+1

आह, मैं देखता हूं। इसे एक बैकस्लैश का उपयोग करके कोशिश की जो काम नहीं करता था। धन्यवाद! –

+0

मैंने $ ('# root \\। SomeCoolThing') की कोशिश की, यह काम करता है। लेकिन जब मैं डबल-कोट्स के साथ $ ("# root \\। SomeCoolThing") आज़माता हूं, तो यह काम नहीं करता है। क्या आपको jQuery में एकल-कोट और डबल-कोट्स के बीच अंतर के बारे में कोई जानकारी है? –

+0

@keweishang उद्धरण प्रकार को तब तक कोई फर्क नहीं पड़ता जब तक वे एक ही – charlietfl

3

हिप यहां से शूटिंग की तरह कुछ का उपयोग कर अवधि बच सकते हैं, लेकिन अगर आप तत्व की आईडी को बदल नहीं सकते, इस चयनकर्ता का उपयोग करके देखें:

$("p[id=root.SomeCoolThing]") 
29

एटीआर कार्यों का उपयोग:

$('p[id="root.SomeCoolThing"]') 
+2

'वन-लाइनर' कभी-कभी पर्याप्त उपयोगी नहीं होते हैं। एक सरल कथन से परे अपनी सोच बताएं ... – nickhar

+2

यह jQuery के हिस्से पर भी बहुत अधिक प्रसंस्करण है जो अनावश्यक है, जहां आपको वास्तव में करने की ज़रूरत है "।" चरित्र ... – Ian

+5

@Ian। यह तब उपयोगी होता है जब आप आईडी को पहले से नहीं जानते हैं। यह एक जेएसएस ऑब्जेक्ट से प्राप्त एक चर हो सकता है। –

3

उपयोग दो बैकस्लैश प्रत्येक विशेष वर्ण

$('#root\\.SomeCoolThing') 
14

आप विशेष वर्ण से बचने के लिए की जरूरत है इससे पहले कि: आप में से किसी का उपयोग करना चाहते हैं तो

$('#root\\.SomeCoolThing') 

docs:

मेटा-कैरेक्टर (जैसे ! "# $% & '() * +,।/:; < =>? [[]^`{|} ~) किसी नाम के शाब्दिक भाग के रूप में, आपको चरित्र को दो बैकस्लाश से बचाना होगा: \\। उदाहरण के लिए, यदि आपके पास id = "foo.bar", वाला तत्व है तो आप चयनकर्ता $ ("# foo \\। Bar") का उपयोग कर सकते हैं।

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