Javascript 每次调用jqueryUI函数时调用函数
目前,每次调用jqueryUi的slideDown/-Toggle时,我都必须手动调用一个函数 我每次都是这样做的: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
$('.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');
});