0

这是 jQuery 1.9.0。我使用 qTip 1.0.0-rc3,我已经从所有$.browser代码中删除了它(因为它从 1.9.0 开始就消失了)。我附上了一个简单的,裸露的骨头(现在甚至没有重新设计)提示。完整功能如下:

// Function to report a parse error
function reportParseError(parseError, msgHandle, textArea)
{
    // Find the inner link element -- there is only one, so this is "safe".
    var link = msgHandle.find("a");

    link.text("line " + parseError["line"]);

    // Add an onclick hook to the link. When clicking on the link, the caret
    // in the text area will move to the position of the error.
    link.on("click", function(e)
    {
        e.preventDefault();
        textArea.focus().setCursorPosition(parseError["offset"]);
    });

    link.qtip({
        content: parseError["message"],
        show: "mouseover",
        hide: "mouseout",
        position: {
            corner: {
                target: "topMiddle",
                tooltip: "bottomMiddle"
            }
        }
    });

    // Show the message
    msgHandle.show();
}

这个函数做我想要的(提示出现在链接上方)。

问题是当提示的先前内容(解析消息可能非常大)大于新内容时:然后我在鼠标悬停时看到新内容下方的旧内容(两个内容​​都在鼠标移出时消失)。

你怎么解决这个问题?

编辑:经过更多思考,观察到的行为似乎是预期的:每次触发此功能时,都会创建一个新的工具提示。这意味着提示需要在“初始化时间”(即 document.ready() 时)附加,并在需要时填充适当的内容。我做对了吗?

4

1 回答 1

0

好的,回答自己。

我根本无法让 qTip2 工作,所以是 qTip 1。

问题在于我发现,工具提示(实际上是 div)被创建但从未被销毁。

解决方案是在 document.ready() 上创建两个虚拟工具提示,在重新创建它们之前将它们销毁,因为我无法抓住工具提示的句柄来更新它们的内容。

于 2013-01-22T08:36:35.450 回答