jQuery - एक तत्व के अंदर से तत्वों का चयन करना


94

मान लीजिए कि मेरे पास इस तरह एक मार्कअप है:

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>

और मैं #moo का चयन करना चाहता हूं।

क्यों $('#foo').find('span')काम करता है, लेकिन $('span', $('#foo'));नहीं?


10
क्यों नहीं $('#moo')? ;) Btw। यह काम करता है: jsfiddle.net/fkling/k5X2r
फेलिक्स क्लिंग

मुझे नहीं पता कि क्यों, लेकिन मैं जिस कार्य को चयनित अवधि के लिए हुक करता हूं, वह पृष्ठ के सभी स्पेन्स पर लागू होता है, न कि #foo के अंदर एक :(
एलेक्स

2
जब आप पहले से ही एक संस्करण में चयनित तत्व के बारे में क्या करते हैं, तो उदाहरण के लिए, आप इस बात से शुरू करते हैं var ele = $("div #foo")कि आप यहां से कैसे (बिना किसी संदर्भ संदर्भ का उपयोग किए) प्राप्त कर सकते हैं
वर्थ 7

जवाबों:


129

आप इनमें से किसी एक का उपयोग कर सकते हैं [सबसे तेज़ से शुरू]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")

जरा देखो तो


1
मुझे लगता है कि तीसरे को स्पू # मू # स्पैन नहीं होना चाहिए # फू?
xr280xr

60

असल में, $ ('# आईडी', यह); किसी भी वंशज स्तर पर #id का चयन करें, न कि केवल तत्काल बच्चे के लिए। इसके बजाय यह प्रयास करें:

$(this).children('#id');

या

$("#foo > #moo")

या

$("#foo > span")

कुछ भी चयन नहीं करेगा क्योंकि तत्व में आईडी है moo , न कि कक्षा।
फेलिक्स क्लिंग

3
यह ध्यान देने योग्य है कि यह समान है .children()और .find()सिवाय इसके कि पूर्व यात्रा डोम उप-पेड़ से केवल एक स्तर नीचे है।
केविन

यह अच्छी तरह से काम करता है, धन्यवाद ;-)
अली लैशिनी

9

सिर्फ उपयोग क्यों नहीं:

$("#foo span")

या

$("#foo > span")

$('span', $('#foo')); मेरी मशीन पर ठीक काम करता है;)


$($(elementA), 'tr#' + key + ' span')मेरे लिए काम नहीं कर रहा है (jQuery 1.10.2)
कोडी

8

आप findदूसरे के अंदर एक तत्व का चयन करने के लिए विकल्प का उपयोग कर सकते हैं । उदाहरण के लिए, एक विशेष div में आईडी txtName के साथ एक तत्व खोजने के लिए, आप की तरह उपयोग कर सकते हैं

var name = $('#div1').find('#txtName').val();

6

यहाँ एक नज़र है - एक तत्व के उप-तत्व को क्वेरी करने के लिए :

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');


3

.... लेकिन $ ('स्पैन', $ ('# फू')); काम नहीं करता है?

इस विधि को चयनकर्ता संदर्भ प्रदान करने के रूप में कहा जाता है

इसमें आप jQuery चयनकर्ता को दूसरा तर्क प्रदान करते हैं । यह किसी भी सीएसएस ऑब्जेक्ट स्ट्रिंग हो सकता है जैसे आप सीधे चयन या एक jQuery तत्व के लिए पास करेंगे।

जैसे।

$("span",".cont1").css("background", '#F00');

उपरोक्त लाइन कंटेनर के भीतर सभी स्पैन का चयन करेगी जिसका नाम क्लास है cont1

डेमो


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