使用jQuery克隆和插入

使用jQuery克隆和插入,jquery,Jquery,\me-flash\u 0是一个元素。而#me\u flash\u 0\u容器是包装容器。问题是克隆的对象似乎是空的html(克隆)无效 Firebug没有显示任何错误 下面是相关的html $(document).ready(function() { var clone = $("#me_flash_0").clone(true); if($('video').attr('class') == "pause_0"){ $("#me_flash_0")

\me-flash\u 0
是一个
元素。而
#me\u flash\u 0\u容器
是包装容器。问题是克隆的对象似乎是空的<代码>html(克隆)无效

Firebug没有显示任何错误

下面是相关的html

$(document).ready(function() {

     var clone = $("#me_flash_0").clone(true);

     if($('video').attr('class') == "pause_0"){
          $("#me_flash_0").remove();    
     }

     $('.top_item img').click(function(){
            $("#me_flash_0_container").html(clone);
            $(this).hide();     
     });

}

有什么想法吗?

a)
clone
是一个完整的jquery扩展元素,而不是html字符串。如果您使用
.append(clone)
而不是
.html(clone)


b)
clone
声明为
ready(..)
函数的本地。您可能需要将其移出到全局变量中,因为您事先不知道单击事件处理程序何时被触发

这似乎是jQuery和克隆对象元素的一个错误

解决这个问题的一种可能方法是将对象父容器的内容复制到一个隐藏的textarea中,然后使用这个textarea的val()克隆一个新对象

请参见此处的类似方法:

正如@techfoobar所写,您不能使用来附加jQuery对象。您还缺少JavaScript结尾处的结束括号


编辑:查看类似问题。

我看到的可能导致此问题的问题

  • 您正在DOM ready上缓存对象。
    从相关代码开始,对象似乎是空的,这就是缓存在变量中的内容。(您还应该添加一个结束标记)。
    我不知道
    embed
    元素中应该出现什么,因此不确定什么都没有发生的事实是否是预期的功能
  • $('video').attr('class')
    将返回应用于DOM中第一个
    元素的类。在示例代码中,
    类_199
    。但是与
    class_0
    相比,它永远不会匹配,也不会删除
    \me_flash_0
    元素

谢谢您提供的信息,但是它并不能解决问题。您也可以发布相关的HTML吗?另一个可能有用的修复方法是将
.attr('class')==“pause\u 0”
更改为
.hasClass('pause\u 0')
,因为即使“video”元素中有多个类,它也可以工作。我还假设您在这里使用的是
标记。另一方面,在选择器中的“视频”之前,您可能错过了一个
#
。我发布了相关的html。if条件没有问题。克隆某个元素,然后通过
append()
(或相关方法)插入它确实应该克隆一个元素,对我来说确实如此。当你尝试它的时候,什么是不起作用的?这似乎是一种方式!非常感谢。
<div id="me_flash_0_container" class="me-plugin">
   <embed id="me_flash_0">
</div>
<video class="pause_199" width="586px" height="440" src="some link" autoplay="true" tabindex="0" style="display: none;"></video>
    $(document).ready(function() {

         var clone = $("#me_flash_0").clone(true);

         if($('video').attr('class') == "pause_0"){
              $("#me_flash_0").remove();    
         }

         $('.top_item img').click(function(){
                $("#me_flash_0_container").children().remove();
                $("#me_flash_0_container").append(clone);
                $(this).hide();     
         });

    });