当我操作其中一个DOM父元素时,我可以阻止<script>元素中的代码再次运行吗?</script>

时间:2011-02-15 23:57:27

标签: javascript jquery dom

这是我想要做的简化版。在页面上有一段HTML,如下所示:

<div id="wrap-this">
    <script>
        $(document).ready(function() {
            alert('Blah.');
        });
    </script>
</div>

在我自己的剧本中,我这样做:

$(document).ready(function() {
    $('#wrap-this').wrap($('<div id="new-div">'));
});

问题在于,当我使用wrap()操作DOM时,<div>中的代码会再次被调用,最终我得到两个alert()。有没有办法可以在不修改<div>或它包含的代码的情况下阻止这种情况发生?

1 个答案:

答案 0 :(得分:2)

在包装div之前,您可以从中删除所有脚本标记:

var theDiv = $('#wrap-this');
theDiv.find('script').remove();
theDiv.wrap($('<div id="new-div"/>'));