我们最近将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);
}
运作得像魔力一样。 :)
this.selector
? - Richard Peckthis.selector
是基础 jQuery 对象的一个属性。 - crush$(document)
为$('body')
后,奇怪的反应消失了,现在完美运行。 :) - Positivity