2010-02-09 10 views
33

मैं अपने ट्रिगरिंग कोड में कैसे जान सकता हूं कि preventDefault कहा गया है?jQuery: मैं कस्टम ईवेंट के साथ event.preventDefault() का उपयोग कैसे करूं?

$(document).trigger('customEvent', params); 
if (/* ??? */) 
    doDefaultActions(); 
+1

वहाँ कोई डिफ़ॉल्ट कार्रवाई नहीं होनी चाहिए .. –

+1

यह अभी भी कुछ है जो आप अपने ईवेंट तंत्र में उपयोग कर सकते हैं यदि हैंडलर गैर-कस्टम ईवेंट के लिए भी उपयोग किया जाता है। –

+0

यदि आपका कस्टम इवेंट वास्तव में कस्टम है, तो आप क्या रोकने की कोशिश कर रहे हैं? आम तौर पर रोकें डीफॉल्ट का उपयोग किया जाता है ताकि ब्राउजर अपनी सामान्य चीज़ नहीं करेगा। ब्राउज़र स्वयं कस्टम घटनाओं के बारे में नहीं जानता या परवाह नहीं करता है। –

उत्तर

45

ट्रिगर() भी एक घटना वस्तु, इसलिए यदि आप एक घटना वस्तु बना सकते हैं, तो जैसे ले जा सकते हैं:

var event = jQuery.Event("customEvent"); 
$(document).trigger(event); 

तो आप के बाद ट्रिगर देखने के लिए जाँच कर सकते हैं यदि preventDefault() इतना की तरह बुलाया गया है:

var prevented = event.isDefaultPrevented(); 
+0

वाह यह अच्छा है। हर दिन कुछ सीखो! – Pointy

+3

हाँ मैंने इसे आज jQuery एपीआई पर देखकर खुद को सीखा। तो हम सब आज सीखते हैं! –

+0

ऐसा प्रतीत नहीं होता है (कम से कम api.jquery.com पर) - ठीक है, मैं इसे वैसे भी नहीं ढूंढ सकता। दस्तावेज़ अब थोड़ा बेहतर हैं लेकिन मुझे अभी भी लगता है कि वे इसे विकी बना देंगे। [संपादित करें: ठीक है, अब मैं इसे स्रोत में देखता हूं !!] – Pointy

0
मेरी जानकारी "preventDefault()" कॉल पाठ फ़ील्ड में लंगर टैग या keypresses पर क्लिक करता है जैसी चीजों के मूल निवासी ब्राउज़र प्रतिक्रियाओं को रोकने के बारे में है के लिए

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

आपका कोड "बाहरी दुनिया" के साथ संवाद करने के लिए कहीं किसी प्रकार का ध्वज सेट कर सकता है।

[संपादित करें] ओह आप हैंडलर को इवेंट ऑब्जेक्ट के संदर्भ में कहीं भी संदर्भित करने का प्रयास कर सकते हैं कि बाहरी कोड इसे ढूंढ सकता है, और फिर बाहरी रूप से "isDefaultPrevented()" के साथ जांच कर सकता है। मुझे नहीं पता कि वह काम करेगा या नहीं।

1

आप कैसे बाहर किया जाए या नहीं डिफ़ॉल्ट रोक दिया गया है, का उपयोग करें खोजने के लिए पूछ रहे हैं:

event.isDefaultPrevented()

यह 'सही' या 'असत्य' पर किया जाए या नहीं preventDefault आधारित वापस आ जाएगी () बुलाया गया था।

संपादित करें: http://api.jquery.com/event.isDefaultPrevented/

1

कस्टम घटनाओं कुछ डिफ़ॉल्ट कार्यों ऐसा होता है .. (वे कस्टम कर रहे हैं) नहीं है।

दूसरी ओर, यदि आप दूसरों को इस घटना के उत्साह से भरा हुआ प्रभाव बंद करना चाहते हैं तो एक बार देख triggerHandler जो पदानुक्रम से ऊपर बुलबुले नहीं है पर .. अगर यह एक कस्टम घटना है .. है

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

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