0

最近我问了一个问题,如何将命令绑定到.fadeIn()事件,而不必.trigger('fadeIn')每次都调用它们。在这篇文章中,我得到了一个很好的解决方案。

但是,我尝试对这样的事件执行相同的程序.hide()

var _old = $.fn.hide;
$.fn.hide = function(){
    var self = this;
    _old.apply(this,arguments).promise().done(function(){
        self.trigger("hide");
    });
};

它似乎一般工作,如这个jsfiddle所示:http: //jsfiddle.net/gEVsX/5/

但是当我将它添加到脚本中时,我从一个看似无关的位置收到错误消息。它是从这部分脚本中抛出的:

    $('#unique_div_id').dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode",
        modal: true,
        buttons: {
            Cancel: function(){
                $(this).dialog("close");
            }
        }
    });

它只是将 div 初始化为模态对话框。我假设我收到此错误是因为我弄乱了 jQuery 隐藏代码。我收到此错误:

未捕获的类型错误:无法调用未定义的方法“addClass”

我已经复制了这个 jsfiddle 中的错误:http: //jsfiddle.net/gEVsX/6/

有谁知道我可以如何修复我的.hide()函数包装脚本?

非常感谢!

4

1 回答 1

2

您违反了该方法的约定,该hide()方法应该是可链接的。

您需要return this;从新的hide().

于 2012-05-07T16:12:48.450 回答