2011-01-31 14 views
6

के बारे में जानकारी प्रदर्शित करने के लिए डोम पेड़ को स्थानांतरित करना मुझे लगता है कि यह एक आसान समस्या होनी चाहिए, लेकिन मैं खुद को अटक गया हूं। जो मैं करने की कोशिश कर रहा हूं वह एक तरीका स्थापित करता है ताकि जब भी आप किसी तालिका (या कहीं भी) पर किसी सेल पर क्लिक करते हैं, तो यह प्रत्येक तत्व के पैरेंट नोड को प्रदर्शित करता है, जो अनिवार्य रूप से डोम पेड़ को घुमाता है। मुझे लगा कि मुझे elem.parentNode का उपयोग करने की आवश्यकता होगी, लेकिन मैं ट्रैवर्सिंग भाग पर फंस गया हूं। वहां कोई भी गुरु जो मेरी मदद कर सकता है, इसकी सराहना की जाएगी।पेरेंट नोड

उत्तर

10
var element; //your clicked element 
while(element.parentNode) { 
    //display, log or do what you want with element 
    element = element.parentNode; 
} 
+1

सहायता के लिए धन्यवाद। त्वरित सवाल हालांकि, तत्व के बजाय element.parentNode का उपयोग क्यों करें? – NinjaCode

+0

डीओएम में प्रत्येक तत्व के पास 'पैरेंट नोड' है - रूट नोड को छोड़कर, जो 'दस्तावेज़' है। तो आप लंबे समय तक तत्व पर पुन: प्रयास करते हैं, क्योंकि तत्व में 'parentNode' है। 'जबकि' बॉडी में आप तत्व तत्वों के लिए मौजूदा तत्व 'parentNode' असाइन करते हैं, इसलिए यह तब तक चल सकता है जब तक कि वह' दस्तावेज़ 'तक नहीं पहुंच जाए, जिसमें कोई' parentNode' नहीं है। – singles

3
var tables = document.getElementsByTagName('table'); 
for (var i=0,len=tables.length;i<len;++i){ 
    tables[i].onclick = function(evt){ 
    if (!evt) evt = window.event; 
    var element = evt.target || evt.srcElement; 
    while (element){ 
     console.log(element); 
     element = element.parentNode; 
    } 
    }; 
} 

तुम सच में किसी भी तत्व पर हर जगह है, तो बस पर क्लिक करें:

document.body.onclick = function(evt){ 
    if (!evt) evt = window.event; 
    var element = evt.target || evt.srcElement; 
    while (element){ 
    console.log(element); 
    element = element.parentNode; 
    } 
}; 
+0

मैं आज तक उस घटना गुण 'currentTarget' की तरह सोचा और' target' IE में उपलब्ध नहीं थे । ऐसा प्रतीत होता है कि वे आईई में चचेरे भाई हैं, जैसे कि कई अन्य गुणों के साथ। अंतर्दृष्टि के लिए धन्यवाद। –

+0

+1 और 10k – qwertymk

+0

तक पहुंचने पर अच्छी नौकरी 'getElementsByTagName' ऑब्जेक्ट को एक ऐरे नहीं देता है इसलिए उसे' Array.prototype.method.call' या [नकली सरणी बनाएं] का उपयोग करने की आवश्यकता होगी (http://stackoverflow.com/ प्रश्न/4513162/दस्तावेज़-getelementsbytagname-return-value) इसे सही ढंग से पुन: सक्रिय करने के लिए। – rxgx

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