2012-05-24 10 views
7

के बाद क्लिक ईवेंट को रोकें क्या यह एक माउस को निष्पादित होने से एक क्लिक ईवेंट को रोकने के लिए संभव है, एक mousedown & माउसअप ईवेंट को निकाल दिया गया है।mousedown और mouseup event

किसी भी मदद/उदाहरण की सराहना की जाएगी।

+1

मैं वास्तव में यह नहीं मिलता है, लेकिन एक 'द्वारा पीछा mousedown' एक' mouseup' एक क्लिक हो सकता है, और बस एक क्लिक काम एक बार वहाँ है, 'एक () 'विधि? – adeneo

+0

यह आपकी मदद कर सकता है http://stackoverflow.com/questions/8875070/stopping-propagation-of-mousedown-mouseup-from-a-click-handler –

उत्तर

-4

हां, यदि आप माउसअप हैंडलर में return false; में यह संभव होना चाहिए, क्योंकि एक मूसडाउन के बाद ऑनक्लिक निकाल दिया गया है और माउसअप हुआ है। नियमित जावास्क्रिप्ट में यह संभव है, इसलिए इसे jquery ईवेंट हैंडलर के साथ भी काम करना चाहिए।

संपादित करें:

एक ईवेंट हैंडलर से एक बूलियन मान रिटर्निंग वास्तव में घटना की खपत के लिए पर्याप्त होना चाहिए। लेकिन, जैसा कि इस ब्राउज़रों में बहुत परतदार है आप मैन्युअल रूप से घटना बुदबुदाती रद्द करने के लिए समारोह का उपयोग करना चाहिए:

event.stopPropagation(); 

जहां घटना पैरामीटर अपने ईवेंट हैंडलर प्राप्त करता है।

+1

मैंने बस jsfiddle में कोशिश की और यह काम नहीं लग रहा था। .. –

+0

ने कोशिश की है और यह – Elliot

+0

काम नहीं कर रहा है यदि इस घटना के साथ दोनों समस्याएं एक ही तत्व पर निकाल दी जाती हैं तो इस दृष्टिकोण में समस्या हो सकती है। क्या आप मुझे बता सकते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं, तो मैं शायद एक कामकाज प्रदान कर सकता हूं। – chucktator

0

क्रोम और इंटरनेट एक्सप्लोरर में, फ़ायरफ़ॉक्स नहीं, हालांकि, mousedown या mouseup पर तत्व को अलग करने और पुनः प्राप्त करने से क्लिक ईवेंट ट्रिगर हो जाएगा। इंटरनेट एक्सप्लोरर में, इस चाल को डबल-क्लिक नहीं मिलते हैं (क्रोम में यह करता है)।

लेकिन मैं इस अजीब व्यवहार पर भरोसा नहीं करता, जो जानता है कि यह किसी बिंदु पर नहीं बदलेगा। साथ ही, सावधान रहें कि अलग-अलग तत्वों (iframes पुनः लोड करने, फ़ाइल फ़ील्ड रीसेट, ...) के बच्चों पर दुष्प्रभाव भी हो सकते हैं।

0

एक अजीब दृष्टिकोण है जो मूसडाउन के दौरान बटन को अक्षम करना है, और इसे कम अवधि के बाद 100ms की तरह सक्षम करना है। यदि इस अवधि में माउसअप होता है, तो क्लिक नहीं किया जाएगा।

$('#btn').on('click', function() { 
 
    alert('clicked') 
 
}); 
 
$('#btn').on('mousedown', function() { 
 
    var btn = $(this); 
 
    btn.attr('disabled', 'disabled'); 
 
    setTimeout(function() { btn.removeAttr('disabled'); }, 100); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<body> 
 
<button id='btn'>Click me</button> 
 
</body>

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