मान लीजिए कि मेरे पास इस तरह एक मार्कअप है:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
और मैं #moo का चयन करना चाहता हूं।
क्यों $('#foo').find('span')
काम करता है, लेकिन $('span', $('#foo'));
नहीं?
मान लीजिए कि मेरे पास इस तरह एक मार्कअप है:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
और मैं #moo का चयन करना चाहता हूं।
क्यों $('#foo').find('span')
काम करता है, लेकिन $('span', $('#foo'));
नहीं?
var ele = $("div #foo")
कि आप यहां से कैसे (बिना किसी संदर्भ संदर्भ का उपयोग किए) प्राप्त कर सकते हैं
जवाबों:
आप इनमें से किसी एक का उपयोग कर सकते हैं [सबसे तेज़ से शुरू]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
असल में, $ ('# आईडी', यह); किसी भी वंशज स्तर पर #id का चयन करें, न कि केवल तत्काल बच्चे के लिए। इसके बजाय यह प्रयास करें:
$(this).children('#id');
या
$("#foo > #moo")
या
$("#foo > span")
moo
, न कि कक्षा।
.children()
और .find()
सिवाय इसके कि पूर्व यात्रा डोम उप-पेड़ से केवल एक स्तर नीचे है।
आप find
दूसरे के अंदर एक तत्व का चयन करने के लिए विकल्प का उपयोग कर सकते हैं । उदाहरण के लिए, एक विशेष div में आईडी txtName के साथ एक तत्व खोजने के लिए, आप की तरह उपयोग कर सकते हैं
var name = $('#div1').find('#txtName').val();
.... लेकिन $ ('स्पैन', $ ('# फू')); काम नहीं करता है?
इस विधि को चयनकर्ता संदर्भ प्रदान करने के रूप में कहा जाता है ।
इसमें आप jQuery चयनकर्ता को दूसरा तर्क प्रदान करते हैं । यह किसी भी सीएसएस ऑब्जेक्ट स्ट्रिंग हो सकता है जैसे आप सीधे चयन या एक jQuery तत्व के लिए पास करेंगे।
जैसे।
$("span",".cont1").css("background", '#F00');
उपरोक्त लाइन कंटेनर के भीतर सभी स्पैन का चयन करेगी जिसका नाम क्लास है cont1
।
दोनों काम करते दिख रहे हैं।
देखें फिडल: http://jsfiddle.net/maniator/PSxkS/
$('#moo')
? ;) Btw। यह काम करता है: jsfiddle.net/fkling/k5X2r