如何克隆<脚本>带有 jQ​​uery 的标签

发布于 2024-12-06 00:35:10 字数 520 浏览 1 评论 0原文

我有以下代码(简化以查看背后的逻辑):

<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剩余の解释 2024-12-13 00:35:10

当我单击克隆的文本时,我需要看到“alfa_1”,但没有任何反应。

如果您想将 DOM 元素及其 jQuery 事件处理程序一起复制,请使用 clone(true)

<div id="alfa">Text</div>

<script type="text/javascript">
    $('#alfa').click(function() {
        alert(this.id);
    });
    var clone= $('#alfa').clone(true);
    clone[0].id+= '_1'; // sorry, I couldn't bring myself to do this the jQuery way
    $('#alfa').after(clone);
</script>

I need to see "alfa_1" when I click in the cloned Text, but nothing happens.

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 id="alfa">Text</div>

<script type="text/javascript">
    $('#alfa').click(function() {
        alert(this.id);
    });
    var clone= $('#alfa').clone(true);
    clone[0].id+= '_1'; // sorry, I couldn't bring myself to do this the jQuery way
    $('#alfa').after(clone);
</script>
那些过往 2024-12-13 00:35:10

原始 div 的警报被触发两次,因为脚本是在 div 内部定义的。将脚本移出 div,它应该按预期工作:

<div id="alfa">Text</div>
<script>
    $("#alfa").click(function() {
        alert($(this).attr("id"));
    });
</script>

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:

<div id="alfa">Text</div>
<script>
    $("#alfa").click(function() {
        alert($(this).attr("id"));
    });
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文