Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery fadeIn事件?_Javascript_Jquery_Fadein - Fatal编程技术网

Javascript jQuery fadeIn事件?

Javascript jQuery fadeIn事件?,javascript,jquery,fadein,Javascript,Jquery,Fadein,当一个元素在使用jQuery时消失时,是否可能获得某种类型的事件通知?也就是说,如果有一个“fadeInEvent”,我会尝试类似的东西 $('elements').delegate('selector', 'fadeInEvent', function() { alert('someId has faded in'); }); 我知道有一个回调函数,例如 但如果可能的话,我宁愿使用事件解决方案。我还使用了:visible,做了一些原型设计,但是在淡入完成之前,它会返回true。您可以

当一个元素在使用jQuery时消失时,是否可能获得某种类型的事件通知?也就是说,如果有一个“fadeInEvent”,我会尝试类似的东西

$('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
});