2012-08-18 13 views
5

मैंने transitionend ईवेंट div1 पर बाध्य किया। जब div1 का संक्रमण समाप्त हो गया, तो ईवेंट चला गया। वहां कोई समस्या नहीं है।तत्व के बच्चों के संक्रमण समाप्त होने पर ट्रांज़िशनेंड ईवेंट क्यों चलाया जा सकता है?

मैं जब प्रत्येक अनुच्छेद के संक्रमण समाप्त हो गया है, इस div1 करने के लिए 3 पैराग्राफ कहा, div1 के transitionend घटना भी भाग गया:

मैं एक विशेष मामले का सामना करना पड़ा। तो transitionend घटना 4 बार दौड़ गई। >। <

div1 के transitionend घटना के श्रोता समारोह के शरीर में, मैं देख सकता हूँ कि event.target! == this। मुझे लगता है कि यह बहुत हास्यास्पद है!

क्रोम और फ़ायरफ़ॉक्स दोनों में यह समस्या है। तो मुझे लगता है कि यह ब्राउज़र का HTML5 spec कार्यान्वयन बग नहीं है।

क्या कोई यह समझा सकता है कि तत्व के transitionend ईवेंट को इस तत्व के बच्चों के तत्व द्वारा ट्रिगर क्यों किया जा सकता है?

धन्यवाद।

+0

आप अपने कोड पोस्ट कर सकते हैं? – tptcat

+0

मुझे इस समस्या का प्रजनन कोड नहीं मिल रहा है। लेकिन मुझे यकीन है कि मैं 'event.target! == यह' 'ट्रांजिशनेंड' ईवेंट के श्रोता फ़ंक्शन के बॉडी में देखता हूं। मैं इस अजीब मुद्दे को समझ नहीं सकता। क्या आपको लगता है कि यह क्रोम और फ़ायरफ़ॉक्स दोनों की एक बग है? – weilou

उत्तर

9

इसे इवेंट बबलिंग कहा जाता है। बच्चे के तत्व पर होने वाली कई घटनाएं, डिफ़ॉल्ट रूप से ईवेंट ऑब्जेक्टर को मूल ऑब्जेक्ट पर कॉल करने के बाद माता-पिता के माध्यम से बुलबुला कर देती हैं। event ऑब्जेक्ट की जांच करके आपने या तो बबलिंग का पता लगाया है या आप ऑब्जेक्ट ऑब्जेक्ट पर ईवेंट को संभालने पर प्रचार को रोककर बुलबुले को रोक सकते हैं।

प्रचार रोकना उन चीजों में से एक है जो आईई बनाम अन्य ब्राउज़रों में अलग है। अन्य ब्राउज़रों में, आप कहते हैं:

event.stopPropagation() 

आईई में IE9 से पहले:

window.event.cancelBubble = true; 
+1

आपके उत्तर के लिए धन्यवाद। सबसे पहले, मुझे लगता है कि 'ट्रांजिशनेंड' घटना एक विशेष होना चाहिए। इसे घटना बुलबिंग श्रृंखला में जोड़ा नहीं जाना चाहिए। तो डब्ल्यू 3 सी को अपने एचटीएमएल 5 'ट्रांजिशनेंड' घटना के spec में सुधार करना चाहिए। दूसरा, मैं वास्तव में 'संक्रमण' घटना को 3 पैराग्राफ में नहीं बांधता हूं। तो ... ऐसा लगता है कि यह क्रोम और फ़ायरफ़ॉक्स की HTML5 कल्पना कार्यान्वयन बग की एक बग है? मैं केवल 'संक्रमण' को 3 अनुच्छेदों में सेट करता हूं। – weilou

+3

@WeiLou - घटनाओं के बहुत सारे बबल (क्लिक, चाबियाँ, आदि ...)। यह एक ब्राउज़र में thnigs काम करने का तरीका है, इसलिए 'transitionend' अन्य घटनाओं से अलग नहीं है। आपको बस इसके बारे में पता होना चाहिए और इसके लिए कोड। यदि आप जानना चाहते हैं कि घटना इस विशेष वस्तु से संबंधित है, तो यह देखने के लिए कि क्या यह आपके ऑब्जेक्ट से मेल खाता है या यह कुछ अन्य वस्तु है, तो बस 'event.target' देखें। कुछ परिस्थितियों में बुलबुले बहुत उपयोगी हो सकता है। – jfriend00

+0

आपकी टिप्पणी के लिए धन्यवाद। :) – weilou

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

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