Недавно мы обновили наш jQuery до 1.9.0, но он сломал наш подвыпивший плагин. Его функциональность live
вызывает ошибку.tipsy live не работает с jQuery 1.9.0
$('.tooltip, abbr').tipsy({
live: true
});
TypeError: this[binder] is not a function
Есть ли какие-либо исправления или исправления для этого? Гуглинг не принес ничего полезного.
UPDATE:
Спасибо за ответы. Я решил сам решить проблему, потому что я не мог найти никаких патчей.
После осмотра ошибка показалась очень легкой для отслеживания. Подвесной плагин может быть легко исправлен с использованием функции 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);
}
работает как шарм. :)
поиск здесь с 'jquery plugin conflict' – Amir
Отличный пост! Откуда вы берете 'this.selector'? –
@RichPeck 'this.selector' является свойством базового объекта jQuery. – crush