क्या इवेंट हैंडलर के अंदर event.stopImmediatePropagation()
और return false
को कॉल करने के बीच कोई अंतर है?jquery: event.stopImmediatePropagation() बनाम झूठी झूठी
उत्तर
हां वे अलग हैं।
return false
मूल रूप से event.stopPropagation()
और event.preventDefault()
दोनों को कॉल करने जैसा ही है।
event.stopImmediatePropagation()
जबकि के रूप में event.stopPropagation()
प्लस एक ही तत्व पर अन्य पंजीकृत ईवेंट हैंडलर्स को रोकने निष्पादित करने के लिए एक ही है। इसलिए यह किसी ईवेंट के लिए डिफ़ॉल्ट कार्रवाई को रोकता नहीं है, जैसे क्लिक किए गए लिंक का पालन करना।
संक्षेप में:
stop | prevent | prevent "same element"
bubbling | default action | event handlers
return false Yes Yes No
preventDefault No Yes No
stopPropagation Yes No No
stopImmediatePropagation Yes No Yes
return false
भी "सामान्य" में काम करता है जावास्क्रिप्ट ईवेंट हैंडलर्स
event.stopPropagation()
और event.preventDefault()
भी "सामान्य" जावास्क्रिप्ट ईवेंट हैंडलर्स में काम करते हैं (एक W3C संगत ब्राउज़र में), जबकि event.stopImmediatePropagation()
jQuery से एक विस्तार है (अद्यतन: स्पष्ट रूप से यह DOM Level 3 Events specification का हिस्सा है)।
नोट:return false
"सामान्य" (गैर jQuery) ईवेंट हैंडलर्स (this answer देखें) (लेकिन अभी भी डिफ़ॉल्ट कार्रवाई रोकता है) में खलबली मचाने वाले से घटना नहीं रोकता है।
शायद लायक पढ़ने:
हां। event.stopImmediatePropagation() उस घटना के लिए किसी अन्य हैंडलर को नहीं जाने देगा, भले ही वे कहां बंधे हों। वापसी झूठी केवल अन्य तत्वों से बंधे हैंडलर को रोकती है (यानी इवेंट हैंडलर स्टॉपइमीडिएटप्रॉपेशन() कॉल से निपटने वाले इवेंट हैंडलर के रूप में नहीं) ईवेंट प्राप्त करने से।
रिटर्निंग false
घटना बुलबुले को रोक देगा, लेकिन अन्य बाध्य घटनाएं आग लग जाएंगी। हालांकि stopImmediatePropagation
अन्य बाध्य घटनाओं को गोलीबारी से रोकता है और बुलबुले रोकता है।
इस पर jsfiddle पर कोड का उदाहरण।
@FelixKling जवाब की मेज होने महान अवधारणा:
मैं और अधिक पोस्टिंग कर रहा हूँ के बारे में बताया तालिका:
stop | prevent | prevent |
bubbling | default action | event handlers |
Same Element | Parent Element
return false Yes Yes No No
preventDefault No Yes No No
stopPropagation Yes No No Yes
stopImmediatePropagation Yes No Yes No
यहाँ return false
के लिए पूर्ण डेमो है, preventDefault
, stopPropagation
और stopImmediatePropagation
:
var kid = document.getElementsByTagName('button')[0];
var dad = document.getElementsByTagName('div')[0];
kid.addEventListener('click', function(e) {
console.log('kid here');
e.stopImmediatePropagation();
});
kid.addEventListener('click', function(e) {
console.log('neighbour kid here');
});
dad.addEventListener('click', function(e) {
console.log('dad here');
});
dad.addEventListener('click', function(e) {
console.log('neighbour dad here');
});
<div>
<button>press</button>
</div>
(इसके अलावा पर JSFiddle उपलब्ध।)
manwal’s answer में तालिका पूरी तरह से सही नहीं है।
stop | prevent | prevent
bubbling | default action | event handlers
| | Same Element | Parent Element
return false Yes Yes No No
preventDefault No Yes No No
stopPropagation Yes No No Yes
stopImmediatePropagation Yes No Yes **Yes**
- 1. jQuery ajax() async झूठी
- 2. झूठी
- 3. शून्य || झूठी और झूठी || रूबी
- 4. Django - खाली = झूठी, आवश्यक = झूठी
- 5. सत्य/झूठी
- 6. एसक्यूएल झूठी
- 7. पाइथन अगर कथन: झूठी बनाम 0.0
- 8. jQuery सत्यापन यह .optional (तत्व) हमेशा झूठी
- 9. विनफॉर्म बटन: क्या दृश्यमान = झूठी लागू = झूठी है?
- 10. अगर (! यह) {वापसी झूठी; }
- 11. .setAttribute ("अक्षम", झूठा); झूठी
- 12. कृपया .call (झूठी)
- 13. getBoolean (EXTRA_NO_CONNECTIVITY) हमेशा झूठी
- 14. string.matches ("। *") रिटर्न झूठी
- 15. HttpContext.Current.User.IsInRole (roleName) हमेशा झूठी
- 16. जब ThreadPool.QueueUserWorkItem रिटर्न झूठी
- 17. लौटने strtotime झूठी
- 18. mod_security झूठी सकारात्मक
- 19. जावा नियमित अभिव्यक्ति झूठी
- 20. ConcurrentDictionary TryRemove वापस झूठी
- 21. ModelState.IsValid == झूठी, क्यों?
- 22. isProviderEnabled (LocationManager.NETWORK_PROVIDER) वापसी झूठी
- 23. PHP file_get_contents झूठी
- 24. ProgressEvent.lengthComputable झूठी क्यों है?
- 25. डाटाबेसिंग सक्षम अगर झूठी
- 26. SKPaymentQueue canMakePayments हमेशा झूठी
- 27. साइनएडएक्सएमएल चेकसिग्नेचर झूठी
- 28. PHP in_array() हमेशा झूठी
- 29. curl_exec() हमेशा रिटर्न झूठी
- 30. sd.canWrite() हमेशा रिटर्न झूठी
+1, मैं कह सकता हूँ stopPropagation का मतलब बंद उत्साह से भरा हुआ - हाँ, डिफ़ॉल्ट को रोकने - नहीं, एक ही तत्व संचालकों को रोकने - कोई – Arjun
@Arjun: हाँ .... मुझे इस जोड़ते हैं। इस महान तुलना तालिका –
+1 'स्टॉपइमीडिएटप्रॉपेशन' लिंक टूटा हुआ है। नया एक http://www.w3.org/TR/DOM-Level-3-Events/#widl-Event-stopImmediatePropagation –