醉意现场不使用jQuery 1.9.0工作(tipsy live does not work wit

2019-08-17 17:00发布

我们最近升级了jQuery来1.9.0,但它打破了我们醉意插件。 它的live功能现在将导致错误。

$('.tooltip, abbr').tipsy({
    live: true
});

TypeError: this[binder] is not a function

有没有这方面的任何修补程序或补丁? 谷歌搜索并没有导致任何有用的东西。


更新:

感谢您的答案。 我决定尝试解决这个问题我自己,因为我找不到任何补丁。

经检查似乎是错误很容易追查。 酒意插件可以很容易地修补使用on功能,而不是过时的live功能。 在醉意的插件,我更换了下面的代码:

if (options.trigger != 'manual') {
    var binder = options.live ? 'live' : 'bind',
        eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
        eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
    this[binder](eventIn, enter)[binder](eventOut, leave);
}

有:

if (options.trigger != 'manual') {
    var eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
        eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
    if (options.live)
        $(document).on(eventIn, this.selector, enter).on(eventOut, this.selector, leave);
    else
        this.bind(eventIn, enter).bind(eventOut, leave);
}

奇迹般有效。 :)

Answer 1:

你需要包含的jQuery插件迁移,因为使用的是live:true它利用jquery.live这是jQuery的1.9去除 。

为了向后兼容,他们已经创建了一个迁移插件可以在这里下载 ,包括迁移插件加回支持的去除方法和工具。

我会做这样的事情

if (options.trigger != 'manual') {
    var eventIn  = options.trigger == 'hover' ? 'mouseenter' : 'focus',
        eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
    if(options.live){
      $(this.context).on(eventIn, this.selector, enter).on(eventOut, this.selector, leave);
    } else {
      this.on(eventIn, enter).on(eventOut, leave);
    }
}


Answer 2:

问题是,这个插件仍然使用.live()让工作法live你那里使用,它已被废弃,已被替换.on()

你应该尝试搜索插件的更新版本或尝试自行更换它。



文章来源: tipsy live does not work with jQuery 1.9.0