在.bind()和.on()之间切换 - 动态

时间:2013-08-07 13:24:44

标签: javascript jquery

我想这样做,因为我正在使用与网络营销相关的第三方脚本。其中一些可能包含jQuery库,它会干扰我网站上的最新或最新的jQuery库。

因此,我想在网站加载时动态地在.on()和.bind()之间切换,并提供变量帮助。

例如,假设我有全局变量:

var incJS = false;

现在,根据第三方脚本,我知道他们是否包含较旧的Lib,所以我会使用它。

function tpNetwork ()
{
    incJS = true;

    startGateway('XXXXX');

    $('#fancybox-outer')
        .delay(1000)
        .fadeTo(300, 1);

    preventGTW();
    widgetStyle();
}

现在您可能会看到最底部有widgetStyle()

的功能

该函数包含大量内容,但重要的部分如下:

$(window).on('resize', function () {
    if ($('.widget_wrap').length) widgetCenter_horizontal();
});

那里有.on()方法。在第三方网络使用的非常旧的jQuery中不支持。我想用.bind()切换每个单独的.on(),但我不知道怎么做,没有重复的东西。 我是这样做的,但它是重复的,我相信有更简单的方法。

if (!incJS)
{
    $(window).on('resize', function () {
        if ($('.widget_wrap').length) widgetCenter_horizontal();
    });
}
else
{
    $(window).bind('resize', function () {
        if ($('.widget_wrap').length) widgetCenter_horizontal();
    });
}

任何提示/帮助表示赞赏。我真的没有任何想法,通过研究我什么都没发现。

2 个答案:

答案 0 :(得分:3)

怎么样:

$(function(){
    if(!$.fn.on) $.fn.on = $.fn.bind;
});

当然,这不包括任何代表团支持。

DEMO

答案 1 :(得分:0)

非常感谢@smerny的评论和@roasted的回答我已经做到了这样,它解决了我的问题。感谢您提供所有提示和解答!

$.fn.onbind = function () {
    if (!ajaxGateway)
        $.fn.onbind = $.fn.on;
    else
        $.fn.onbind = $.fn.bind;
};

现在一切都按照我的意愿行事。这是一个例子。

$(window).onbind('resize', function () {
    if ($('.widget_wrap').length) widgetTop();
});