【问题标题】:clone() in jquery problem with IE and chromeIE和chrome的jQuery问题中的clone()
【发布时间】:2010-12-15 00:10:42
【问题描述】:

我正在尝试克隆一个特定的 div 并进行一些操作以清除内容并返回。

var tmp = $('<div>').append($('#masterdiv').clone()).remove().html();

它在 Firefox 中运行良好。但在 IE 和 chrome 中,这会删除整个 div 而不是克隆。

解决方法是什么?

编辑:

主要目的是复制整个master div,清除child div里面的内容,用json更新到数据库中。实际的主 div 和子 div(我将其作为内容的占位符)将从数据库中呈现。

除非管理员批准布局,否则不应清除现有内容。

所以我试图克隆 div 并进行操作,然后问题就出在 IE 和 chrome 上。..

【问题讨论】:

  • 为什么要调用remove()?节点不应附加到 DOM
  • 据我所知,你可以这样做var tmp = $('#masterdiv').html();
  • 如何获取 masterdiv 中的 html(内容已清除的子 div)。但它不应该影响页面外观,除非我更新它并再次访问该页面。例如:我可能在子 div 中有一些内容要显示在页面中。我喜欢更改一些子 div 的背景颜色并在数据库中更新,并在我的应用程序中获得管理员批准。管理员批准后,页面将采用最新更改。
  • 你的解决方案是什么?我真的不明白你对答案的评论

标签: jquery html dom-manipulation


【解决方案1】:

首先引起我注意的是您没有将有效的标记字符串传递给 $() 函数。例如,$('&lt;div&gt;') 应该变成 $('&lt;div /&gt;')

来自jquery docs

所有 HTML 必须格式正确, 否则可能无法正常工作 跨所有浏览器。这包括 $("") 可能不起作用的情况 但是 $("") 会(注意 XML 样式的右斜杠)。

这里可能还有其他事情要处理,但这是你应该首先纠正的事情。

祝你好运!

【讨论】:

  • 我按照你说的做了(格式良好的标签),但问题仍然只存在于 IE 和 chrome 中,它在 firefox 中运行良好。
  • 真正的问题在于页面中的自闭html标签。当我纠正它时,这个问题已经解决了。
  • 表示去掉了&lt;/html&gt;结束标签?
  • @coding_idiot,我在主 div 中有自封闭标签(如
    ,当然这是不正确的),这导致了 IE 和 chrome 中的问题。可能在这6年对jquery和浏览器的增强,这个可以处理的更好
猜你喜欢
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多