环境:
我想使用“.html()”(或追加)加载一堆javascript并动态运行。
如果pice包含'< tr>',那么整个javascript就消失了。 但如果标签是'< p>',那么一切都很顺利。
我知道JQ使用wrapMap()在构建buildFragment()时自动关闭一些标记。 但是,与原生的“innerHTML”方法相比,它会让人感到困惑。
这不是一个jQuery错误吗?或者设计师出于某种原因意图这样做?
此处代码
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script>
<div style="color:red;" id="out1"></div>
<div style="color:red;" id="out2"></div>
<div style="color:red;" id="out3"></div>
<div style="color:red;" id="out4"></div>
<script type="text/javascript">
var dom = document.createElement('script');
var str1 = 'var a = "<tr>"; testFunc(a);';
var str2 = 'var a = "<p>"; testFunc(a);';
dom.innerHTML = str1;
$("#out1").text(dom.outerHTML);
$(dom).html(str1);
$("#out2").text(dom.outerHTML);
dom.innerHTML = str2;
$("#out3").text(dom.outerHTML);
$(dom).html(str2);
$("#out4").text(dom.outerHTML);
</script>
此处输出
DOM generated by innerHTML
<script>var a = "<tr>"; testFunc(a);</script>
DOM generated by .html()
<script><tr></tr></script>
DOM generated by innerHTML
<script>var a = "<p>"; testFunc(a);</script>
DOM generated by .html()
<script>var a = "<p>"; testFunc(a);</script>