回退到jQuery中不推荐使用的方法

时间:2013-09-19 20:50:12

标签: jquery function events callback

我有第三方服务从我们的主站点提取我们的一个JS文件。这样做的原因是在页眉和页脚中使用各种部分(它们是从我们的主站点复制的)。第三方服务使用了令人难以置信的旧版jQuery,导致.on()方法调用失败。我正在尝试编写一些内容来检测这一点并切换到已弃用的方法。我现在的工作得很好(我们现在只使用此文件中的点击事件...):

if(!$.isFunction($.fn.on)) {
    $.fn.on = $.fn.click;
}

我想为任何事件做上述工作,以便在我们的主文件中,我们仍然可以使用相同的.on()方法,即jQuery的新版本合并而不会破坏第三方应用程序。我尝试过的东西不起作用:

if(!$.isFunction($.fn.on)) {
    $.fn.on = function(event, callback) {
        return $.fn[event](callback());
    }
}

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您过早地执行回调。

if(!$.isFunction($.fn.on)) {
    $.fn.on = function(event, callback) {
        return $.fn.bind.call(this,arguments);
    }
}

这也缺少许多使用.on的不同方法,但实际上只需要复制.on的源代码就可以完成这项工作。

你真的不应该这样做,它可能导致你无法预测的现有页面的其他奇怪,因此我建议只使用.bind。直接因为它存在于所有版本的jQuery中,并且将继续存在以实现向后兼容。