1

关注jQuery API

.clone( [withDataAndEvents] [, deepWithDataAndEvents] )

deepWithDataAndEvents一个布尔值,指示是否应复制克隆元素的所有子元素的事件处理程序和数据。默认情况下,它的值与第一个参数的值匹配(默认为 false)。

这是我的代码:

HTML:

<div id="d1">Click this paragraph to increase text size.<p id="p1">This is another</p></div>
<button>Click me</button>

Javascript:

$("button").click(function(){
    var para = $("#d1:first").clone(true);
    $("body").append(para);
});
$("#d1").click(function(){
   $(this).animate({fontSize:"+=1px"});
});
$("#p1").click(function(){
   $(this).css({color:"green"});
});

当我单击按钮时, #p1 变为 green 。按照我使用clone(true)的 api , deepWithDataAndEvents 必须为 false 并且 #p1 不能受到影响。我使用 jQuery v1.8.2

4

1 回答 1

1

看起来您误解了文档中的部分内容:

deepWithDataAndEvents一个布尔值,指示是否应复制克隆元素的所有子元素的事件处理程序和数据。默认情况下,它的值与第一个参数的值匹配(默认为 false)。

由于您true在第一个参数中提供且未指定deepWithDataAndEvents因此默认为true, notfalse。要获得您正在寻找的行为,您实际上应该编写:

var para = $("#d1:first").clone(true, false);
于 2012-11-11T10:45:54.773 回答