2011-01-08 11 views
5

जब भी कोई व्यक्ति div में क्लिक करता है तो पता लगाना चाहता है (अनिवार्य रूप से मैं जानना चाहता हूं कि जब कोई उपयोगकर्ता मेरी साइट पर टेक्स्ट के एक सेक्शन के साथ बातचीत कर रहा है, तो कुछ टेक्स्ट चुनकर या एक लिंक पर क्लिक करना), लेकिन मैं उपयोगकर्ता क्या कर रहा है में हस्तक्षेप नहीं करना चाहता।माउस का पता लगाने के बिना जावास्क्रिप्ट के साथ जावा पर क्लिक करें साइड इफेक्ट्स

यदि मैं div पर एक onmousedown या onclick घटना डालता है तो यह चयन, लिंक इत्यादि तोड़ने के समाप्त होता है। क्या इन घटनाओं को हस्तक्षेप किए बिना इन घटनाओं को पकड़ने का कोई तरीका है?

+0

जब तक आपके पास विशेष रूप से कोड नहीं होता है (जैसे 'event.cancelBubble' को सेट करना,' event.stopPropagation() 'को कॉल करना या सत्य (या कुछ सत्य-वाई) को कॉल करना, तो कोड को हस्तक्षेप नहीं करना चाहिए। क्या आप एक विशिष्ट उदाहरण दिखा सकते हैं? – RoToRa

उत्तर

2

हाँ, मुझे लगता है कि आप वर्तमान में घटना के अंत में false लौट रहे हैं बाइंडिंग, सिर्फ इतना है कि या चीजों से कोई भी कार्य नहीं है यह बंधन में:

$('a').click(function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    return false; 
}); 

आप में से कोई कार्य नहीं करते हैं इन तीन चीजें, jQuery घटना को ब्राउज़र पर बुलबुले से नहीं रोकेगा।

संपादित करें: क्षमा करें यह नहीं पता था कि यह एक सादा जावास्क्रिप्ट प्रश्न था।

8

ऑनमूसडाउन या ऑनक्लिक को तब तक हस्तक्षेप नहीं करना चाहिए जब तक कि return false; नहीं है।

आप ऐसा कर सकते हैं:

document.getElementById("spy-on-me").onmousedown = function() { 
    console.log("User moused down"); 
    return true; // Not needed, as long as you don't return false 
}; 

आप अन्य लिपियों कि इस विधि के माध्यम से व्यवहार संलग्न कर रहे हैं पृष्ठ पर, फिर उन्हें अधिभावी को रोकने के लिए है, तो आप कर सकते हैं:

var spyElement = document.getElementById("spy-on-me"); 
var oldMousedown = spyElement.onmousedown; 
spyElement.onmousedown = function() { 
    console.log("User moused down"); 
    if(oldMousedown) oldMousedown(); 
}; 
0

आप कर सकते हैं एक ईवेंट श्रोता जोड़ने के साथ-साथ

var myNode= document.querySelector('.imagegrid'); 
myNode.addEventListener("click",function(e){  
alert(e.target+" clicked"); 
}); 

एक समान उदाहरण प्रदर्शित किया गया है here

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