$(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();
});
}
#me-flash_0
是<embed>
元素。 #me_flash_0_container
是包装容器。问题是克隆的对象似乎是空的。 html(clone)
无效。
Firebug没有显示任何错误。
这是相关的html
<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>
有什么想法吗?
答案 0 :(得分:1)
这似乎是jQuery和克隆对象元素的错误。
请参阅http://bugs.jquery.com/ticket/10324
解决此问题的一种可能方法是将对象的父容器的内容复制到隐藏的textarea中,然后使用此textarea的val()来克隆新对象。
在此处查看类似方法:Cloning a silverlight embed object results in an empty white element
答案 1 :(得分:1)
$(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(); }); });
正如@techfoobar所写,你不能使用 .html()
来附加一个jQuery对象。您还在JavaScript的末尾错过了一个末尾括号。
修改:有关类似问题,请参阅this comment。
答案 2 :(得分:0)
a)clone
是一个完整的jquery扩展元素,而不是一个html字符串。如果您执行.append(clone)
而不是.html(clone)
b)clone
被声明为ready(..)
函数的本地。您可能需要将其移出到全局变量中,因为您事先不知道触发单击事件处理程序的时间
答案 3 :(得分:0)
我看到的问题可能会导致这个......
</embed>
标签)
我不知道应该在embed
元素中出现什么,所以不确定没有任何事情发生的事实是预期的功能还是没有... $('video').attr('class')
将返回应用于DOM中第一个 video
元素的类。在示例代码中class_199
。但是您与class_0
进行比较,因此它永远不会匹配,也不会删除#me_flash_0
元素。