我正在尝试向具有与另一个方法相同名称(但参数集不同)的jQuery对象添加一个方法。
目前为止,我已经完成了以下工作:
jQuery.fn.insertBefore = function(elem, duration)
{
this.css("display", "none");
this.insertBefore(elem);
this.toggle(duration);
}
然而,这段代码(特别是
this.insertBefore(where);
行)调用了同一个函数,而不是所需的jQuery insertBefore()
函数。我需要怎么做才能将此函数添加到jQuery对象中,并使其重载(而不是覆盖)现有函数?
编辑:解决方案
(function ($)
{
var oldInsertBefore = $.fn.insertBefore;
jQuery.fn.insertBefore = function(elem, duration)
{
if (duration === undefined)
{
oldInsertBefore.call(this, elem);
return;
}
this.css("display", "none");
this.insertBefore(elem);
this.toggle(duration);
}
})(jQuery);
insertBefore
函数的其余部分吗?还是它可以在何时调用旧函数与新函数之间做出区分? - Patrick PeriniinsertBefore
将被替换。在您的替换版本中,您可以决定何时调用原始版本。 - Sergio Tulentsevif( typeof duration == 'undefined' ) { oldInsertBefore.apply(this, arguments); return; }
的东西。 - Matmarbon