2

我有一个 javascript 代码,但我无法理解在使用 jquery 插入 dom 后它是如何执行的。

在 dom append|insert 操作之后还会触发 domready 事件吗?这不可能发生,但如果不是,这段代码是如何工作的?

 function insert() {
     var data = '<script type="text/javascript">  $(function(){ alert("insert"); });<\/script>';
     $("#example").html(data);
 }

 $(function () {
     //If domready is triggered with the .html() method why this is not executed second time?
     alert('ready');
 });

JsFiddlle 链接

4

1 回答 1

1

请参阅此答案的第二个引用块https://stackoverflow.com/a/3603496/81053

jQuery 的所有插入方法都在内部使用 domManip 函数在元素插入 DOM 之前和之后清理/处理元素。domManip 函数所做的一件事是取出任何将要插入的脚本元素并通过“evalScript 例程”运行它们,而不是将它们与 DOM 片段的其余部分一起注入。它分别插入脚本,评估它们,然后将它们从 DOM 中删除。

我相信 jQuery 这样做的原因之一是避免在某些情况下插入脚本时 Internet Explorer 中可能出现的“权限被拒绝”错误。如果它位于您要插入的包含元素内,然后在 DOM 中移动,它还可以避免重复插入/评估相同的脚本(这可能会导致问题)。

于 2013-06-20T14:48:09.050 回答