मेरे पास कॉलबैक फ़ंक्शन event के पैरामीटर के साथ एक ईवेंट श्रोता है, जो एक तत्व को सौंपा गया है। क्या कोई तरीका है कि मैं इस कोड को लिखने की आवश्यकता के बिना उस तत्व के 5 वें माता-पिता का चयन कैसे कर सकता हूं?

event.target.parentNode.parentNode.parentNode.parentNode.parentNode;
1
smunteanu 31 अगस्त 2020, 18:04

3 जवाब

सबसे बढ़िया उत्तर

बिल्कुल, कुछ तरीके हैं जिनसे आप इसे हासिल कर सकते हैं।

I. JQuery विधि:

$('#element1').parents().eq(5);

द्वितीय. कच्चा जावास्क्रिप्ट

Function returnNthParent(n, element) 
{
 parent = element;
    for (i = 0; i < n; i++) 
    {
       parent = parent.parentNode;
    }
 return parent;
}
1
Rachel Casey 31 अगस्त 2020, 18:18

यदि आप मूल तत्व श्रृंखला की सटीक संख्या जानते हैं जिससे आपको गुजरना है, तो आप सरल सहायक को लागू कर सकते हैं

const takeParent = (target, count) => {
  while (--count >= 0) {
    if (target === document) {
      break;
    }
    target = target.parentNode;
  }
  return target;
};

takeParent(myElement, 5); // give 5th parent of myElement or "document" if there are less than 5 parents
1
dhilt 31 अगस्त 2020, 18:17

कोई nth पैरेंट विधि नहीं है इसलिए आपको या तो पेरेंटनोड का एक गुच्छा करना होगा या निकटतम(चयनकर्ता) जो DOM ट्री पर तब तक चलेगा जब तक कि उसे एक मैच नहीं मिल जाता। तो आप इसके बारे में कुछ अनोखा पाते हैं और उसका उपयोग करते हैं

document.querySelector('input').addEventListener("input", function(evt) {
  const row = evt.target.closest('.row');
  console.log(row);
});
<div class="row">
  <div>
    <div>
      <div>
        <input />
      </div>
    </div>
  </div>
</div>
1
epascarello 31 अगस्त 2020, 18:11