如何使用jQuery克隆<script>标记

Mem*_*pan 0 jquery clone

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

<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>
Run Code Online (Sandbox Code Playgroud)

当我点击克隆的文本时,我需要看到"alfa_1",但没有任何反应.

当我使用clone(true,true)时,但是我没有在Firebug中看到克隆div的代码,看看到底发生了什么.

此外,我不知道为什么单击原始div警报被触发两次.

谢谢.

bob*_*nce 7

当我点击克隆的文本时,我需要看到"alfa_1",但没有任何反应.

<script>元素执行DOM或innerHTML操作在浏览器中是不一致的,并且在JavaScript执行周期方面没有任何意义.在所有情况下都避免它.

如果要将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>
Run Code Online (Sandbox Code Playgroud)

  • 所以+1 for*"我无法用jQuery的方式来做这件事"* (2认同)