jQuery停止显示html的工具提示插件

时间:2013-05-09 15:27:14

标签: jquery asp.net css tooltip

我希望我的工具提示停止显示呈现的HTML并改为标记。我注意到在中继器中显示数据时,以下工作正常。使用jQuery Tooltip插件1.3。

Server.HtmlEncode(Eval("ActivityDescription") as string)

然后我想我可以对标题属性

做同样的事情
<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Eval("ActivityDescription") as string) %>">
<%# Utilities.TruncateAtWord(Server.HtmlEncode(Eval("ActivityDescription") as string),30) %>
</td>

工具提示通过插件这样调用

   $j('.activityDescriptionTooltip').tooltip();

所以如果我的ActicvityDescription是"<h2>Test</h2>"

我想在工具提示中看到"<h2>Test</h2>"。我的标题属性呈现为

title="&amp;lt;h2&amp;gt;Test&amp;lt;/h2&amp;gt;"

但是在工具提示中,它只是以H2格式呈现为“Test”。

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,不仅可行,而且应该与“转发器”中的工作方式相同。

您使用的功能(Server.HTMLEncode)非常适用于此。

以下应该可以正常使用

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode("<h2>Test</h2>") %>">

您的代码的问题是您对字符串进行了两次编码(因此工具提示将显示编码的字符串)。

而不是:

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Server.HtmlEncode(Eval("ActivityDescription") as string)) %>">

试试这个:

<td class="activityDescriptionTooltip" title="<%# Server.HtmlEncode(Eval("ActivityDescription") as string) %>">

修改

你说这不起作用。我认为确实如此。

结帐this fiddle。你可以看到html是:

<div title="&lt;h2&gt;Test&lt;/h2&gt;">asdf</div>

如果将鼠标悬停在右下角(结果)框架中的div上,工具提示会显示<h2>Test</h2>就好了。至少在IE10,FF和Chrome中。 (我没有尝试过其他浏览器,但如果他们在这个问题上的工作方式不同,我会感到震惊。)


<强> EDIT2

jQuery tooltip plugin是一个非常陈旧且过时的插件,它需要一个额外的编码级别:

检查this fiddle

<div title="&amp;lt;i&amp;gt;Test&amp;lt;/i&amp;gt;">asdf</div>

它被编码两次并且显示得很好。

另一方面,我不建议使用插件。 jQuery UI Tooltip对你来说是更好的选择。