首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >P标记中基于div的工具提示

P标记中基于div的工具提示
EN

Stack Overflow用户
提问于 2011-05-25 10:03:29
回答 1查看 2.2K关注 0票数 1

我试图在CMS (Alterian)的内容上使用jQueryTools实现工具提示功能。这样做的想法是,编辑器在文本中的文字中标记一个散列和括号,只要他们想要一个工具提示,即“#扳机词(工具提示内容)”。在请求时,使用正则表达式修改HTML,在每个触发词后面插入工具提示div,如下所示:

代码语言:javascript
复制
...replace(/#(\w[\s\S]*?)\(([\s\S]*?)\)/g, "<span class='tipword'>$1</span><div class='tooltip'>$2</div>");

这在许多情况下都很好,但是触发器也可能出现在P标记中。编辑器编写他们的文本,这些文本被CMS存储为HTML。我控制不了P标签的使用。当您在P-标记中放置div时,将在插入div之前自动关闭P标记。当然,这会破坏文本的布局,而且由于触发词和工具提示-div不再相邻,工具提示不起作用。

当来自CMS的HTML类似于:

代码语言:javascript
复制
<P>
    some text with a #triggerword (it's a word that triggers a tooltip to appear)
    and the text goes on....
</P>

然后,在完成工具提示转换之后,DOM读取:

代码语言:javascript
复制
<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>

..。布局和工具提示都坏了。

向我建议的一个解决方案是将工具提示span和div封装在对象标记中:

代码语言:javascript
复制
...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并将tipword HTML放入对象标记的altHtml属性中:

代码语言:javascript
复制
<object altHtml="<span ..... /div>"/>

我的90%以上的(公司内)用户使用IE,所以我不能忽视那个浏览器(正如我想要的那样)。

有人对接下来的尝试有什么建议吗?你们是我最后的选择。我担心我将不得不忘记我的好工具提示div,转而使用标准的浏览器工具提示(title-属性)。

谢谢!

巴特

EN

回答 1

Stack Overflow用户

发布于 2011-07-01 15:55:24

下面的答案是编辑,以同意一个具体的方法,从一个最初的含糊的答案。

主要的问题是,p绝对不能包含块级元素(例如,另一个p,div)。在这些页面的chrome中,浏览器会重新损坏html,并且很难用标准的.html验证工具找出这一点。所以要注意这一点。

因此,您基本上是被迫将工具提示的内容放在其他地方。我认为最简单、最优雅的方法是,以字符串的形式收集div属于工具提示的内容,并将它们附加到网页底部,作为隐藏。(我从未使用过Alterian,但我认为它应该支持插件的这种功能?)然后移动&点击/悬停显示这些div。我试着在这里展示这样的网页:http://jsfiddle.net/NaDeh/1/,它有几十行长。

原则上,您也可以将div的内容放在其他地方,比如javascript字符串,但是您需要小心地转义;或者在另一个页面中加载ajax,但是这样的额外负载似乎没有必要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6122666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档