Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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 每次调用jqueryUI函数时调用函数_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript 每次调用jqueryUI函数时调用函数

Javascript 每次调用jqueryUI函数时调用函数,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,目前,每次调用jqueryUi的slideDown/-Toggle时,我都必须手动调用一个函数 我每次都是这样做的: $('.slideMeDown').slideDown(); $('.slideMeDown').promise().done(function(){ functionICallEverytime(); }); 有没有更简单的方法来解决这个问题?我没有在jqueryUI的代码中找到从那里调用函数的段落 使用 jQueryUI v1.11.0 jQuery

目前,每次调用jqueryUi的slideDown/-Toggle时,我都必须手动调用一个函数

我每次都是这样做的:

$('.slideMeDown').slideDown();
$('.slideMeDown').promise().done(function(){
        functionICallEverytime();
    });
有没有更简单的方法来解决这个问题?我没有在jqueryUI的代码中找到从那里调用函数的段落

使用 jQueryUI v1.11.0
jQuery v1.7.2

您可以尝试覆盖slideDown函数。大概是这样的:

$.slideDown = (function (originalSlideDown) {
    return function () {
        originalSlideDown.apply(this, arguments);
        functionICallEverytime();
    };
}($.slideDown));
希望能有所帮助。

文档:

签名:
.slideDown([duration][,complete])

签名:
.slideDown(选项)

创建自己的插件,而不是猴子补丁

$.fn.mySlideDown = function () {
    this.slideDown.apply(this, arguments);
    functionICallEverytime();
    return this;
};

这是如何装饰原始的slideDown方法:

$.fn.slideDown = (function(orig, defaultCallback) {
    return function() {
        var deferred = orig.apply(this, arguments);
        deferred.promise().done(defaultCallback);
        return deferred;
    };
})($.fn.slideDown, functionICallEverytime);
演示: 现在每次使用
$('.slideDown').slideDown()时
functionICallEverytime
将在动画完成后调用

返回延迟确保其他非默认承诺也能起作用:

$('.slideMeDown').slideDown().promise().done(function() {
    alert('another one');
});

上面的示例将执行
functionICallEverytime
,然后触发
alert(“另一个”)

尝试
$('.slideMeDown').slideDown(functionalcalleverytime)不稳定地调用该函数。但是谢谢。
$.fn.slideDown = (function(orig, defaultCallback) {
    return function() {
        var deferred = orig.apply(this, arguments);
        deferred.promise().done(defaultCallback);
        return deferred;
    };
})($.fn.slideDown, functionICallEverytime);
$('.slideMeDown').slideDown().promise().done(function() {
    alert('another one');
});