P标签中基于div的工具提示

| 我正在尝试使用jQueryTools对来自CMS(Alterian)的内容实施工具提示功能。这个想法是,编辑者在文本中要使用工具提示的地方用井号和方括号标记单词,即\“#triggerword(工具提示内容)。在请求时,使用正则表达式更改HTML,并在之后插入工具提示div每个触发词,如下所示:
...replace(/#(\\w[\\s\\S]*?)\\(([\\s\\S]*?)\\)/g, \"<span class=\'tipword\'>$1</span><div class=\'tooltip\'>$2</div>\");
在许多情况下,此方法都可以正常工作,但触发词也可能会出现在P标签内。编辑者写他们的文本,这些文本由CMS存储为HTML。我无法控制P标签的使用。将div放在P标签中时,插入div之前,P标签会自动关闭。这当然会破坏文本的布局,并且由于触发词和工具提示div不再相邻,因此工具提示不起作用。 来自CMS的HTML如下所示:
<P>
    some text with a #triggerword (it\'s a word that triggers a tooltip to appear)
    and the text goes on....
</P>
然后在完成工具提示转换后,DOM读取:
<P>
    some text with a <SPAN class=\'tipword\'>triggerword</SPAN>
</P>
<DIV class=\'tooltip\'>it\'s a word that triggers a tooltip to appear</DIV>\"); 
and the text goes on....
<P></P>
...,布局和工具提示已损坏。 我建议的一种解决方案是将工具提示跨度和div包装在一个对象标签中:
...replace(/#(\\w[\\s\\S]*?)\\(([\\s\\S]*?)\\)/g, \"<object><span class=\'tipword\'>$1</span><div class=\'tooltip\'>$2</div></object>\");
这确实有效!即使在P标签中!对于Firefox和Chrome,但不适用于IE。 IE会更改DOM并将提示词HTML放入object-tag的altHtml-property中:
<object altHtml=\"<span ..... /div>\"/>
我(公司)的用户中有90%以上使用IE,因此我无法忽略该浏览器(就我所希望的那样)。 有人对下一步尝试有建议吗?你们是我的不得已我担心我将不得不忘记漂亮的工具提示div,而是使用标准的浏览器工具提示(标题属性)。 谢谢! 巴特     
已邀请:
根据原始的模糊答案,对以下答案进行了编辑以同意特定的方法。 主要问题是p绝对不能包含块级元素(例如,另一个p,div)。在适用于此类网页的Chrome中,浏览器会重新整合html,因此很难使用标准的.html验证工具来解决。因此,请注意这一点。 因此,您基本上被迫将工具提示的内容放在其他位置。我认为最简单,最优雅的方法是,将字符串中属于工具提示的div收集起来,然后将其隐藏地附加到网页底部。 (我从未使用过Alterian,但我想它应该支持插件吗?)然后在单击/悬停时移动并显示这些div。我试图显示这样的网页是什么样子:http://jsfiddle.net/NaDeh/1/,它长几十行。 原则上,您也可以将div的内容放在其他地方,例如javascript字符串,但是您需要进行仔细的转义。或在其他要加载Ajax的页面中显示,但这种额外的加载似乎是不必要的。     

要回复问题请先登录注册