tipsy live不适用于jQuery 1.9.0

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

 $('.tooltip, abbr').tipsy({ live: true }); TypeError: this[binder] is not a function 

对此有任何修复或补丁吗? 谷歌搜索并没有带来任何有用的东西。


更新:

谢谢你的回答。 我决定尝试自己修复这个问题,因为我找不到任何补丁。

经过检查,错误似乎很容易追查。 可以轻松修补tipsy插件以使用onfunction而不是不推荐使用的livefunction。 在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迁移插件,因为你正在使用live:true它使用了在jquery 1.9中删除的jquery.live 。

为了向后兼容,他们创建了一个迁移插件 ,可以在此处下载并包含迁移插件,以添加对已删除方法和实用程序的支持。

我会做类似的事情

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

问题是这个插件仍然使用.live()来让你在那里使用的方法工作,它已被弃用并已被.on()取代。

您应该尝试搜索插件的更新版本或尝试自己替换它。