Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';jQuery&x27;s$.get()是否将脚本元素插入DOM?_Jquery - Fatal编程技术网

为什么';jQuery&x27;s$.get()是否将脚本元素插入DOM?

为什么';jQuery&x27;s$.get()是否将脚本元素插入DOM?,jquery,Jquery,我正在使用$.get()从远程服务器检索HTML片段,并将该片段插入DOM。该代码段包含几个基本HTML元素和一个脚本元素。所有基本元素都会被插入,但脚本元素不会 示例代码片段: <p>This is a paragraph</p> <script type="text/javascript"> // JavaScript that will work with the HTML in the snippet </script> 这是一段 //将

我正在使用
$.get()
从远程服务器检索HTML片段,并将该片段插入DOM。该代码段包含几个基本HTML元素和一个脚本元素。所有基本元素都会被插入,但脚本元素不会

示例代码片段:

<p>This is a paragraph</p>
<script type="text/javascript">
// JavaScript that will work with the HTML in the snippet
</script>
这是一段

//将与代码段中的HTML一起使用的JavaScript
通过查看在Chrome的web inspector中检索到的资源,我已经验证了脚本元素是否在检索到的代码段中。那么,为什么
$.get()
不插入script元素,是否可以执行我想要执行的操作

编辑:

<p>This is a paragraph</p>
<script type="text/javascript">
// JavaScript that will work with the HTML in the snippet
</script>

为了澄清,我使用
$.get()
检索HTML片段,并使用
$()将其插入DOM。HTML(数据)
应该插入脚本元素,就像插入静态内容一样-脚本不会执行。使用html()插入html时,它将映射到每个元素的innerHTML属性。历史上,浏览器不会执行以这种方式插入的脚本元素(IE除外)

这也反映在HTML 5规范草案中:

注意:使用innerHTML插入的脚本元素在插入时不会执行


如果要执行脚本,可以查找元素并评估其文本,或者从文本创建新的脚本元素并将其正确插入DOM。

执行此操作时,脚本元素不会绑定到文档。 您需要自己插入脚本

一种方法是调用回调函数,解析返回的html并手动插入脚本。像这个: `

\u插入脚本:函数(html){
var sfrag=']*>([\\S\\S]*?);
var matchAll=newregexp(sfrag,'img');
var matchOne=新的RegExp(sfrag,'im');
if(html.match(matchAll)){
$.map(html.match(matchAll)、函数(脚本){
eval((script.match(matchOne)| |['',])[1]);
});
}
}
`


我也见过一些使用jQuery中live()函数的解决方案,但我不确定它是如何工作的。

为什么需要script元素?通常您只需要执行它,您的情况是否有所不同?脚本包含用于处理代码段中包含的表单元素的函数。这些函数将绑定到诸如选择更改值和提交的表单之类的对象。所有这些都不会发生。