如何克隆<脚本>带有 jQuery 的标签脚本>
我有以下代码(简化以查看背后的逻辑):
<div id="alfa">Text
<script>
$("#alfa").click(function() {
alert($(this).attr("id"));
});
</script>
</div>
<script>
var clone = $("#alfa").clone().attr("id",$("#alfa").attr("id")+"_1");
$("#alfa").after(clone);
</script>
当我单击克隆的文本时,我需要看到“alfa_1”,但没有任何反应。
当我使用 clone(true,true) 时,它可以工作,但我没有在 Firebug 中看到克隆的 div 的代码来查看到底发生了什么。
另外我不知道为什么点击原始 div 会触发两次警报。
谢谢。
I have the following code (simplified to see the logic behind):
<div id="alfa">Text
<script>
$("#alfa").click(function() {
alert($(this).attr("id"));
});
</script>
</div>
<script>
var clone = $("#alfa").clone().attr("id",$("#alfa").attr("id")+"_1");
$("#alfa").after(clone);
</script>
I need to see "alfa_1" when I click in the cloned Text, but nothing happens.
When I use clone(true,true) that works, but I don't see the code of the cloned div in Firebug to see what really happens.
Also I don't know why clicking the original div the alert is triggered twice.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对
元素进行 DOM 或 innerHTML 操作在浏览器中是不一致的,并且对于 JavaScript 执行周期来说没有任何意义。在所有情况下都要避免它。
如果您想将 DOM 元素及其 jQuery 事件处理程序一起复制,请使用
clone(true)
:Doing DOM or innerHTML manipulations on
<script>
elements is inconsistent in browsers and doesn't really make any sense in terms of the JavaScript execution cycle. Avoid it in all cases.If you want to copy DOM elements together with their jQuery event handlers, use
clone(true)
:原始 div 的警报被触发两次,因为脚本是在 div 内部定义的。将脚本移出 div,它应该按预期工作:
The alert for the original div is triggered twice because the script is defined inside the div. Move the script out of the div and it should work as expected: