2011-12-05 11 views
10

क्या किसी तत्व को jQuery का उपयोग करने में फीका होने पर किसी प्रकार की घटना अधिसूचना प्राप्त करना संभव है? अर्थात। अगर वहाँ था एक 'fadeInEvent' मैं जैसेjQuery fadeIn घटना?

$('elements').delegate('selector', 'fadeInEvent', function() { 
    alert('someId has faded in'); 
}); 

मैं जानता हूँ कि jQuery.fadeIn() के लिए एक कॉलबैक फ़ंक्शन, उदा है कि वहाँ कुछ कोशिश करेंगे

$('#someId').fadeIn('fast', function() { 
    alert('callback when someId has faded in'); 
}); 

लेकिन यदि संभव हो तो मैं एक ईवेंट समाधान का उपयोग करूंगा। मैंने :visible का उपयोग करके कुछ प्रोटोटाइप भी किया, लेकिन फीड पूरा होने से पहले यह true लौटाता है।

उत्तर

12

आप trigger कर सकते हैं कॉलबैक में एक कस्टम ईवेंट:

$("#someId").fadeIn("fast", function() { 
    $(this).trigger("fadeInComplete"); 
}); 

घटना होगा बबल सामने सबसे घटनाओं की तरह डोम पेड़, आप on (jQuery 1.7+) के साथ पूर्वज तत्वों में से किसी पर यह कब्जा कर सकते हैं ताकि, bind या delegate:

$("#someAncestor").on("fadeInComplete", function() { 
    //Element has finished fading in. 
}); 
+0

धन्यवाद, यह मेरी समस्या हल करता है। मैं अब के लिए 'बाइंड' का उपयोग करता हूं, क्योंकि प्रोजेक्ट वर्तमान में jQuery 1.6.4 का उपयोग कर रहा है। – matsev

4

आप यह सुनिश्चित कर सकते हैं कि प्रत्येक कॉलबैक आप fadein विधि में पारित में आप उचित घटना बढ़ा, या आप बंदर exising jQuery fadein विधि पैच सकता है हमेशा कॉलबैक में एक fadeInEvent बढ़ाने के लिए, उदाहरण के लिए:

(function($) { 
    var jQueryFadeIn = $.fn.fadeIn; 
    var newFadeIn = function(speed, callback) { 
    var newCallback = function() { 
     if (callback) { 
      callback.apply(this, arguments); 
     } 
     $(this).trigger('fadeInComplete'); 
    }; 
    jQueryFadeIn(speed, newCallback); 
    }; 
    $.fn.fadeIn = newFadeIn; 
})(window.jQuery); 
+0

@Downvoters उपयोग कर सकते हैं, क्यों? –