2012-08-16 37 views
0

当我克隆使用jQuery的对象,如果它是一个选择'onchange'事件变为'onclick'。如何用jQuery克隆一个元素来保存所有的属性和事件?已经使用.clone(true)。jQuery .clone变化onclick

这里是JS代码:

function addNovoPasseio (obj){ 
    newobj=$(".passeios").clone(true); 
    $(newobj).find("*").removeAttr('id'); 
    $(newobj).insertBefore("#addPasseio"); 
} 

这里是我想要克隆的HTML代码:

<div class="passeios"> 
    <div class="select-cidade"> 
     <label for="cidade">Cidade</label> 
     <select name="cidade" id="cidade" onchange="getBairros(this,$(this).parent().next().find('select'));" class="select-obr"> 
      <option value="-1">&nbsp;</option> 
      <option>Cidades</option> 
     </select> 
    </div> 
</div> 
<div class="botoeira" id="addPasseio"><button onclick="addNovoPasseio(this);">New</button></div> 
+0

什么使你相信事件发生了变化? – j08691 2012-08-16 21:43:40

回答

-1

尝试克隆这样的:

.clone(true, true) 

您可以随时检查绑定到某个元素的事件:

$('selector').data('events') 
+1

'。数据(“事件”)'在1.8被删除,你应该从来没有使用过也无妨,因为它的内部。 – Esailija 2012-08-16 21:48:47

+1

另外$('selector')。data('events')不会注册添加内联的事件。 – Nope 2012-08-16 21:49:13

+2

根据文档,'.clone(真)'相同'.clone(真,真)'。 *“默认情况下,其值与第一个参数的值”*“匹配。 – 2012-08-16 21:50:19

0

它看起来像你正在寻找的不仅仅是一个普通的克隆,但更像是一个深拷贝更多的东西。

下载从deepCopy.js:http://oranlooney.com/deep-copy-javascript/

然后你可以用以下命令来创建一个备份:

var myCopiedItem = owl.deepCopy(myItem) 

希望这有助于!