绑定命令以隐藏事件而不调用.trigger('hide');

时间:2012-05-07 16:10:41

标签: jquery html hide bind

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

但是我尝试对.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隐藏代码。我收到了这个错误:

  

未捕获的TypeError:无法调用未定义的方法'addClass'

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

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

非常感谢!

1 个答案:

答案 0 :(得分:2)

你违反了hide()方法的合同,该方法应该是可链接的。

您需要return this;中的hide()