तत्व का अभिभावक विभाजन हो रहा है


208

यह वास्तव में सरल होना चाहिए लेकिन मैं इससे परेशान हूं। मुझे एक बाल तत्व का माता-पिता तलाक कैसे मिलेगा?

मेरा HTML:

<div id="test">
    <p id="myParagraph">Testing</p>
</div>

मेरा जावास्क्रिप्ट:

var pDoc = document.getElementById("myParagraph");
var parentDiv = ??????????   

मैंने सोचा होगा document.parentया parent.containerकाम करूंगा लेकिन मुझे not definedगलतियां मिलती रहती हैं। ध्यान दें कि pDocपरिभाषित किया गया है, बस इसके कुछ चर नहीं हैं।

कोई विचार?

PS अगर संभव हो तो मैं jQuery से बचना पसंद करूंगा।

जवाबों:


336

आप खोज रहे हैं parentNode, जो Elementइनसे विरासत में मिला है Node:

parentDiv = pDoc.parentNode;

आसान संदर्भ:

  • DOM2 कोर विनिर्देशन - सभी प्रमुख ब्राउज़रों द्वारा समर्थित
  • DOM2 HTML विनिर्देश - DOM और HTML के बीच बाँधता है
  • DOM3 कोर विनिर्देशन - कुछ अपडेट, सभी प्रमुख ब्राउज़रों द्वारा समर्थित नहीं हैं
  • HTML5 विनिर्देश - जिसमें अब DOM / HTML बाइंडिंग है

33

यदि आप एक विशेष प्रकार के तत्व की तलाश में हैं जो तत्काल माता-पिता की तुलना में दूर है, तो आप एक फ़ंक्शन का उपयोग कर सकते हैं जो डोम तक जाता है जब तक कि वह एक नहीं पाता, या नहीं:

// Find first ancestor of el with tagName
// or undefined if not found
function upTo(el, tagName) {
  tagName = tagName.toLowerCase();

  while (el && el.parentNode) {
    el = el.parentNode;
    if (el.tagName && el.tagName.toLowerCase() == tagName) {
      return el;
    }
  }

  // Many DOM methods return null if they don't 
  // find the element they are searching for
  // It would be OK to omit the following and just
  // return undefined
  return null;
}

jQuery के साथ: el.closest (tagName)
उलुलु

3
@ उल्ल्लू-चलो देखते हैं, लाइब्रेरी की 10,000 लाइनें या 10 लाइन फ़ंक्शन? ;-)
रॉब




-1

किसी तत्व के माता-पिता को जानना तब उपयोगी होता है जब आप उन्हें तत्वों के "वास्तविक-प्रवाह" से बाहर निकालने की कोशिश कर रहे होते हैं।

नीचे दिया गया कोड, तत्व के माता-पिता की आईडी को आउटपुट करेगा जिनकी आईडी प्रदान की गई है। गलत निदान के लिए इस्तेमाल किया जा सकता है।

<!-- Patch of code to find parent -->
<p id="demo">Click the button </p>
<button onclick="parentFinder()">Find Parent</button>
<script>
function parentFinder()
{
    var x=document.getElementById("demo"); 
    var y=document.getElementById("*id of Element you want to know parent of*");
    x.innerHTML=y.parentNode.id;
}
</script>
<!-- Patch ends -->
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.