Примечание. Этот вопрос был помечен как решенный один раз, но выяснилось, что при обновлении до последней версии jQuery была устранена только одна проблема. Пожалуйста, см. Обновленный вопрос ниже для оставшейся проблемы.
Привет всем,
Я только что столкнулся со странной проблемой с jQuery.Tipsy.
Вот упрощенная демонстрационная скрипка: http://jsfiddle.net/6nWtx/7/
Как видите, последний добавленный элемент a.tipsy2
не получает подсказки. Элементы .tipsy2
в настоящее время настраиваются внутри функции jQuery.each()
, и в этот момент у меня возникла проблема. Без each()
это работает. К сожалению, мне нужно .each()
, чтобы перебрать элементы, чтобы сделать другие вещи, прежде чем я вызову tipsy()
.
Есть предложения?
Вот исходный код Tipsy: https://github.com/jaz303/tipsy/blob/master/src/javascripts/jquery.tipsy.js
ИМХО проблема в использовании комбинации jQuery.each()
и опции Tipsy live:true
Обновление:
Другие вещи, которые я хочу сделать перед вызовом .tipsy()
, проверяют наличие дополнительной конфигурации.
Например: <a href="#" title="This is a tooltip" class="tipsyfy delayed">Help</a>"
В этом примере я добавлю следующую опцию в Tipsy: delayIn:1000
Если с элементом не связан класс delayed
, этот параметр будет delayIn:0
.
Используя ту же логику, я хочу указать и следующие классы: show-top, show-left, show-right, show-bottom
для опции Tipsy, которая называется gravity
.
Пример: <a href="#" title="This is a tooltip" class="tipsyfy delayed show-left">Help</a>"
Полный код:
$(".tipsyfy").each(function () {
var a = "s",
b = 0;
if ($(this).hasClass("show-left")) a = "w";
else if ($(this).hasClass("show-down")) a = "n";
else if ($(this).hasClass("show-right")) a = "e";
if ($(this).hasClass("delayed") && $(this).attr("data-delayIn") != null) b = $(this).attr("data-delayIn");
$(this).tipsy({
gravity: a,
fade: true,
live: true,
delayIn: b
})
})
А вот демоверсия full jsFiddle со всеми вещами, которые я хочу сделать: http://jsfiddle.net/xmLBG/1/