2012-03-01 15 views
9

का उपयोग कर सभी क्लिक किए गए तत्वों को ट्रैक करें मैं HTML-पृष्ठ पर क्लिक किए गए सभी तत्वों को ट्रैक करना चाहता हूं। मुझे संदर्भित करने के लिए एक अच्छा तरीका चाहिए कि वास्तव में किस तत्व पर क्लिक किया गया था (इसलिए मैं बाद में एक समान अलग HTML-पृष्ठ पर क्लिक को फिर से चलाने में सक्षम होगा)।जावास्क्रिप्ट

क्या क्लिक किया गया था जिस तत्व को संदर्भित करने का कोई अच्छा तरीका है?

मैं पृष्ठ पर प्रत्येक तत्व के लिए अद्वितीय आईडी और क्लासनाम जोड़ सकता हूं। लेकिन मुझे लगता है कि एक बेहतर तरीका होना चाहिए?

एचटीएमएल पेज जो मैं क्लिक को फिर से चलाऊंगा, वही होगा।

कुछ इस लाइट ...

कोड जो तत्व क्लिक किए गए

var arrayWithElements = new Array(); 

document.onclick = clickListener; 

function clickListener(e) { 
    var clickedElement; 
    if(e == null) { 
     clickedElement = event.srcElement; 
    } else { 
     clickedElement = e.target; 
    } 
    arrayWithElements.push(clickedElement) 
    alert(arrayWithElements); 
} 

कोड ट्रैक करने के लिए (लेकिन अधिक सटीक जानकारी जो तत्व यह था, हो सकता है कि इकट्ठा करने के लिए संभव है) कि एक समान एचटीएमएल-पृष्ठ पर उपयोग किया जाएगा

document.someHowGetTheElement().onclick(); 
+2

: तो तुम

document.getElementsByTagName(item.tag)[item.index] 

का उपयोग करके एक और इस दस्तावेज़ के "उदाहरण" में इस तत्व का उपयोग कर सकते

डेमो (आइटम arrayWithElements के एक आइटम है, जहां) शायद सबसे आसान तरीका है। आप उन्हें जावास्क्रिप्ट के साथ भी जोड़ सकते हैं। –

+0

"अधिक सटीक जानकारी" से आपका क्या मतलब है, वर्तमान में क्लिक किया गया एलीमेंट आपको नोड का संदर्भ देगा, मुझे नहीं पता कि इससे अधिक सटीक क्या हो सकता है। –

+0

@ जेम्स: 'यह' क्लिक किए गए तत्व पर नहीं, 'दस्तावेज़' का संदर्भ देगा। @ डॉ। मोल्ले: उन्होंने किसी अन्य पृष्ठ पर घटनाओं को "पुनः चलाने" का उल्लेख किया है। आप वास्तव में डीओएम नोड्स के संदर्भों को जारी या हस्तांतरित नहीं कर सकते हैं। –

उत्तर

14

मुझे लगता है कि आप कुछ इस तरह की तलाश में हैं: उदाहरण के लिए


var arrayWithElements = new Array(); 

function clickListener(e) 
{ 
    var clickedElement=(window.event) 
         ? window.event.srcElement 
         : e.target, 
     tags=document.getElementsByTagName(clickedElement.tagName); 

    for(var i=0;i<tags.length;++i) 
    { 
     if(tags[i]==clickedElement) 
     { 
     arrayWithElements.push({tag:clickedElement.tagName,index:i}); 
     console.log(arrayWithElements); 
     }  
    } 
} 

document.onclick = clickListener; 

यह हर पर स्टोर करेगा एक वस्तु पर क्लिक करें कि तत्व और अनुक्रमणिका का टैग नाम शामिल है। प्रत्येक तत्व को आईडी जोड़ना http://jsfiddle.net/doktormolle/z2wds/

+0

प्रभावित! मुझे लगता है कि यह वही है जो मैं ढूंढ रहा था! बहुत बहुत धन्यवाद :) – user1087110

+1

+1 अच्छा विचार। 'GetElementsByTagName' के परिणामों को कैश करने लायक हो सकता है। –

+0

हां यह करता है, मैंने प्रस्ताव –

1

आप 012 का उपयोग कर सकते। दूसरे शब्दों में, यह जानने का एक अच्छा तरीका है कि कौन सी तत्व को जगह पर आईडी जोड़ने के बिना क्लिक किया गया था, jquery's .cssSelectorAsString() विधि का उपयोग करना है।

function clickListener(e) { 
    var clickedElement; 
    if(e == null) { 
     clickedElement = event.srcElement; 
    } else { 
     clickedElement = e.target; 
    } 
    arrayWithElements.push($(clickedElement).cssSelectorAsString()); // <==== 
    alert(arrayWithElements); 
}  

यह भी देखें:: Get unique selector of element in Jquery

+0

मैं jquery का उपयोग नहीं कर रहा हूं (उल्लेख करने के लिए भूल गया)। लेकिन मैं xPath mentod में देखता हूँ! धन्यवाद! – user1087110