【问题标题】:jQuery DOM change screws my CSSjQuery DOM 改变了我的 CSS
【发布时间】:2011-06-26 09:59:08
【问题描述】:

我有这个:

if($('.content', wrapper).length === 0)
   $(data[current].content).appendTo(wrapper);
else
   $('.content', wrapper).replaceWith($(data[current].content));

var el = $('.content', wrapper);

这是有效的,但是这段代码应该做同样的事情:

var el = ($('.content', wrapper).length === 0) 
           ? $(data[current].content).appendTo(wrapper) 
           : $('.content', wrapper).replaceWith($(data[current].content));

搞砸了我的 CSS。

el 似乎在这两种情况下都是一样的,但由于某些奇怪的原因,我在此之后的动画出错了,很可能是因为一些 CSS 更改...

我做错了什么?

【问题讨论】:

  • 是 .replaceWith 你想要的吗?我相信这将返回旧内容,而不是新替换的内容。
  • 我想要$('.content', wrapper)(被替换的元素)。就我而言,这不是 replaceWith 返回的吗?
  • 我认为它会返回被替换的内容(并且不再在 DOM 中)。来自 jQuery 文档:“必须注意返回的是原始 jQuery 对象。这个对象是指已从 DOM 中删除的元素,而不是替换它的新元素。”
  • 你是对的。我找到了replaceAllapi.jquery.com/replaceAll,它有效,并且似乎返回了新内容。谢谢,您应该发布您的 cmets 作为答案:D

标签: jquery html css jquery-selectors


【解决方案1】:

.replaceWith 将返回被替换的内容(并且不再在 DOM 中)。来自jQuery docs

需要注意的是原文 返回 jQuery 对象。这个对象 指已经被 从 DOM 中移除,而不是新的 替换它的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2016-11-23
    • 1970-01-01
    • 2012-11-15
    • 2015-12-26
    • 2013-12-25
    • 2013-02-04
    相关资源
    最近更新 更多