Tipsy Live 无法与 jQuery 1.9.0 兼容。

21

我们最近将jQuery升级到1.9.0,但这破坏了我们的tipsy插件。它的live功能现在会导致错误。

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

TypeError: this[binder] is not a function

这个问题有没有修复或补丁?谷歌搜索没有找到有用的内容。


更新:

感谢回答。由于找不到任何补丁,我决定尝试自己解决这个问题。

经检查,错误似乎很容易追踪。可以轻松地修复tipsy插件,使用on而不是已弃用的live功能。在tipsy插件中,我替换了以下代码:

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);
}

运作得像魔力一样。 :)


使用“jquery插件冲突”在此处搜索。 - Amir
很棒的帖子!你从哪里获取this.selector - Richard Peck
@RichPeck this.selector 是基础 jQuery 对象的一个属性。 - crush
替换 $(document)$('body') 后,奇怪的反应消失了,现在完美运行。 :) - Positivity
谢谢!这正是我正在寻找的 :) - user3824994
2个回答

14

你需要包含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);
    }
}

我倾向于在这个项目中不使用jQuery迁移插件。我们打算不使用任何已弃用的功能。 - Dysprosium
只有当你能够更改“tipsy”插件时,才能进行更改。如果不能更改,我认为你会遇到问题。 - Arun P Johny
这是一个好的解决方案,我在 Github 上看到了许多关于这个特定问题的问题。我想知道为什么作者不接受任何拉取请求? - gion_13
这个答案比更新后的问题解决方案更好,因为它使用 $(this.context) 而不是 $(document) 来委托事件。 - crush

0
问题在于这个插件仍然使用.live()来让你使用的live方法工作,它已经被弃用,并已被.on()取代。
你应该尝试搜索更新版本的插件或自己替换它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接