我如何将jquery .live()添加到此代码中

时间:2010-11-05 13:57:44

标签: jquery jquery-plugins

我有一个(我的意思是迷你)工具提示插件,我已经创建但遇到了一个问题。基本上,如果在dom ready事件上实例化,它一切正常。但是,如果我需要(像我一样)将$ ajax数据带到更改dom的页面上,那么我的插件不再(出于显而易见的原因)有效。

我不太清楚插件中的哪个位置我会添加必要的代码以使其正常运行(我已经尝试将实时事件附加到悬停和鼠标移动事件上,但结果很精细)。我不希望每次运行$ ajax方法时都必须重新初始化工具提示代码,因为页面中涉及很多不同的方法。我宁愿将某种“实时”功能附加到工具提示插件。

无论如何,可以在这里找到完整的跟踪:

http://www.jsfiddle.net/jimibt/FLSXv/

希望它在某个地方缠绕/响铃......

[更新] 重新进行迭代,将实时事件添加到悬停和鼠标移动事件会导致我的“真实”示例中出现异常结果。我正在寻找替代方案。感谢...

2 个答案:

答案 0 :(得分:2)

当您应用工具提示时,还要添加一个新类,例如hasTooltip。然后,当您完成AJAX请求时,查找没有a类但具有hasTooltip类但已应用并运行vtip函数的所有$.tooltip()个元素在他们身上。

你可以找到这样的新元素:

$('a.vtip:not(a.hasTooltip)');

请参阅my update示例。

答案 1 :(得分:1)

这很简单:

$(this).live("hover", function(e) {
        this.t = this.title;
        this.title = "";
        $("body").append("<p id='tooltip'>" + this.t + "</p>");
        $("#tooltip").hide().css("top", (e.pageY - xOffset) + "px").css("left", (e.pageX + yOffset) + "px").fadeIn(1400);
    }, function() {
        this.title = this.t;
        $("#tooltip").fadeOut('fast').remove();
    });
    $(this).live("mousemove", function(e) {
        $("#tooltip").css("top", (e.pageY - xOffset) + "px").css("left", (e.pageX + yOffset) + "px");
    });