2012-07-01 19 views
13

मैं एक लेख तत्व पर CSS3 संक्रमण प्रभाव लागू कर रहा हूं लेकिन ईवेंट श्रोता ट्रांजिशनेंड केवल शुद्ध जावास्क्रिप्ट में काम करता है, jQuery के साथ नहीं।jQuery के साथ CSS3 संक्रमण घटना श्रोता

// this works 
this.parentNode.addEventListener('transitionend', function() {alert("1"); }, true); 

// this does not work 
$(this).parent().addEventListener('transitionend', function() {alert("1"); }, true); 

किसी ने मुझसे व्याख्या कर सकते हैं क्या मैं गलत कर रहा हूँ:

नीचे दिए गए उदाहरण देखते हैं?

$(this).parent().bind('transitionend', function() {alert("1"); }); 

उत्तर

19

jQuery में आप bind() या on() विधि का उपयोग करना चाहिए

$(this).parent().on('transitionend', function() { 
    alert("1"); 
}); 
+4

पूर्ण संगतता के लिए, आपको विक्रेता-प्रीफिक्स्ड ईवेंट भी शामिल करना चाहिए। देखें [http://blog.teamtreehouse.com/using-jquery-to-detect-when-css3-animations-and-transitions-end](http://blog.teamtreehouse.com/using-jquery-to-detect विवरण के लिए -when-css3-एनिमेशन-और-संक्रमण-अंत)। –

1

पहले एक वास्तव में (मैं इसे शक है क्योंकि यह एक विक्रेता उपसर्ग की आवश्यकता होती है चाहिए) काम करता है, तो यह भी काम करना चाहिए:

4

this.parentNode एक जावास्क्रिप्ट ऑब्जेक्ट देता है। इसकी संपत्ति .addEventListener $(this).parent() एक jQuery ऑब्जेक्ट देता है। यह एक संपत्ति .addEventListener

नहीं है बजाय इस कोशिश करें,

$(this).parent().on('webkitTransitionEnd oTransitionEnd transitionend msTransitionEnd', function() { 
    alert("1"); 
}) 
23

भी ध्यान दें कि आप एक तत्व पर कई बदलाव चला रहे हैं (उदाहरण के लिए। अस्पष्टता और चौड़ाई) है कि आप एकाधिक transitionEnd कॉलबैक मिलेगा ।

यदि आप एक डीवी के संक्रमण अंत में किसी ईवेंट को बाध्य करने के लिए jQuery का उपयोग कर रहे हैं, तो आप एक() फ़ंक्शन का उपयोग करने पर विचार करना चाहेंगे।

$(this).parent().one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend", function() { 
    // your code when the transition has finished 
}); 

इसका मतलब है कि कोड केवल पहली बार आग लग जाएगा। इसलिए, यदि आपके पास एक ही तत्व पर चार अलग-अलग संक्रमण होते हैं, तो आपका कॉलबैक केवल एक बार आग लग जाएगा।

+0

क्या यह 'एक' या' चालू है? – fboes

+1

'एक()' का उपयोग करके यह सुनिश्चित करता है कि आप केवल एक ईवेंट कैप्चर करें। – graygilmore

+0

आप बेहतर जांचते हैं कि e.currentTarget उचित तत्व है, क्योंकि 'ट्रांजिशनेंड' माता-पिता को अपने बच्चों के किसी भी एनीमेशन के लिए भी आग लग जाएगी। – venimus

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