我的代码中有一个div,当我克隆它时,不会直接触发事件。 这是代码;
<div id="draggable" onclick="alert(1);" class="ui-widget-content drag">
<p>Drag me to my target</p>
</div>
<div id="here">
</div>
<script type="text/javascript">
$("#draggable").clone().removeAttr("id").attr('id', 'draggable2').appendTo("#here");
$("#draggable2").trigger('onclick');
</script>
当我点击克隆元素时,它会正常触发事件。
如果我更改脚本以让原始元素触发它也可以正常工作:
<script type="text/javascript">
$("#draggable").clone().removeAttr("id").attr('id', 'draggable2').appendTo("#here");
$("#draggable").trigger('onclick');
</script>
绑定功能也可以正常工作:
<script type="text/javascript">
$("#draggable").clone().removeAttr("id").attr('id', 'draggable2').appendTo("#here");
$("#draggable2").bind('click', function () { alert('2'); });
$("#draggable2").trigger('click');
</script>
有没有人知道如何在克隆后直接触发克隆元素的“标准”onlick。
答案 0 :(得分:20)
要克隆元素及其事件,必须将“true”作为第一个参数传递。要传递其子项的事件,您还必须传递“true”作为其第二个参数。
$myClone = $('#element').clone( true, true );
答案 1 :(得分:0)
从一开始就是一种脆弱的方法。你有一个克隆功能,然后你有一个克隆后执行的功能。为什么不在克隆之后调用该函数?创建一个可重用的函数,可以通过单击绑定调用,也可以直接从克隆函数调用。
如果绝对必要,您可以使用$(selector).click()
来触发点击事件。
[编辑:根据Fauntleroy的回应,我不知道有必要传递'true',所以如果没有这个建议,我的方法也行不通。但是“这可能是一种糟糕的做法”的一般建议就是支持