使用jquery从页面中删除元素时出现奇怪的浏览器行为

时间:2013-04-10 02:39:53

标签: javascript jquery html html5

我有一个应用程序,允许用户评论文本文档(如谷歌文档)。当我允许用户从页面中删除这些评论时,我遇到了一些奇怪的行为。根据请求删除,我会运行一些代码并从注释中提取原始内容,然后从页面中删除注释。

删除代码如下所示

html = html + $(this).html()
$(this).children().andSelf().unbind();
$(this).contents().unwrap()
$(this).remove()

代码是从更大的代码中提取的,但我不相信代码的其余部分是必要的,以隔离这个问题。事实上,我甚至不确定这段代码是否有必要修复它。

无论如何,当用户删除评论(使用上面的代码)然后尝试在同一个地方留下另一个评论时,会出现问题。无论他们试图发表什么评论,如果它甚至包含旧评论的部分内容,浏览器将自动从旧评论中选择所有内容。

奇怪的是,我已经彻底扫描了html,并且没有旧评论的基于HTML的残余。浏览器中的所有内容(当我检查元素时)是用于开始和结束的注释的引号。

这是一个提取的摘录,其中有注释(它是带有hl类的span)

<span class="T1">Lorem ipsum hendrerit in 
    <span class="hl s_240" highlight_id="s_240">
        <span class="remove_highlight" style="display: none;">Remove</span>
        "vulputate"
    </span> velit esse
</span>

这是删除评论后提取的代码

<span class="T1">Lorem ipsum "vulputate" velit esse </span>

注意前面突出显示的单词周围的引号 这是当我发表新评论时,只选择veluptuate中的e和后面单词中的v

<span class="T1">"Lorem ipsum hendrerit in "
    <span class="hl new_hl s_421" highlight_id="s_421">
        <span class="remove_highlight">Remove</span>
        "vulputate v"
    </span>
    "elit esse"
</span>

正如您所看到的,浏览器会自动假设我想突出显示整个单词vulputate,即使我只选择了部分内容。

如果有人能告诉我为什么会这样或者如何解决它,我会非常感激!

0 个答案:

没有答案