Javascript jQuery fadeIn事件?
当一个元素在使用jQuery时消失时,是否可能获得某种类型的事件通知?也就是说,如果有一个“fadeInEvent”,我会尝试类似的东西Javascript jQuery fadeIn事件?,javascript,jquery,fadein,Javascript,Jquery,Fadein,当一个元素在使用jQuery时消失时,是否可能获得某种类型的事件通知?也就是说,如果有一个“fadeInEvent”,我会尝试类似的东西 $('elements').delegate('selector', 'fadeInEvent', function() { alert('someId has faded in'); }); 我知道有一个回调函数,例如 但如果可能的话,我宁愿使用事件解决方案。我还使用了:visible,做了一些原型设计,但是在淡入完成之前,它会返回true。您可以
$('elements').delegate('selector', 'fadeInEvent', function() {
alert('someId has faded in');
});
我知道有一个回调函数,例如
但如果可能的话,我宁愿使用事件解决方案。我还使用了
:visible
,做了一些原型设计,但是在淡入完成之前,它会返回true
。您可以确保在每个传入fadeIn方法的回调中引发适当的事件,或者可以对现有的jQuery fadeIn方法进行猴子补丁,以便始终在回调中引发FadeEvent,例如:
(function($) {
var jQueryFadeIn = $.fn.fadeIn;
var newFadeIn = function(speed, callback) {
var newCallback = function() {
if (callback) {
callback.apply(this, arguments);
}
$(this).trigger('fadeInComplete');
};
jQueryFadeIn.apply(this, speed, newCallback);
};
$.fn.fadeIn = newFadeIn;
})(window.jQuery);
您可以在回调中创建自定义事件:
$("#someId").fadeIn("fast", function() {
$(this).trigger("fadeInComplete");
});
与大多数事件一样,该事件将在DOM树上冒泡,因此您可以使用on
(jQuery 1.7+)、绑定或委托在任何祖先元素上捕获它:
$("#someAncestor").on("fadeInComplete", function() {
//Element has finished fading in.
});
也许您可以使用回调参数对我来说没有任何效果,所以我的解决方案是破解fadeIn函数并运行自定义触发器
var oldFadeIn = $.fn.fadeIn;
$.fn.fadeIn = function(){
$(this).trigger('fadeInComplete');
return oldFadeIn.apply( this, arguments );
}
然后简单地把它绑在你需要的任何东西上
$('.some_element').on('fadeInComplete', function(){
// do some magic here
});
谢谢,这解决了我的问题。我现在使用bind
,因为项目当前使用的是jQuery 1.6.4。我得到了这个。animate不是一个函数
,就像它在fadeIn替换中没有正确映射一样。不知道如何解决这个问题,有什么想法吗?@Syffys谢谢,我想你的编辑解决了这个问题?
$('.some_element').on('fadeInComplete', function(){
// do some magic here
});