jQuery . HTML()和.append()呈现的内容与HTML DOM innerHTML属性不同
jQuery .html() and .append() rendering content differently to HTML DOM innerHTML property
我正在使用MVC部分视图创建一些动态内容,该视图作为字符串返回给AJAX调用。动态内容包括一些Kendo UI小部件(下拉列表、日期选择器等)(在局部视图中配置和创建),然后在页面上呈现。当使用jQuery .html()
或.append()
时,这一切都很好-一切都加载得很好,并且Kendo小部件无需做任何事情即可初始化。
但是由于加载的动态内容的数量和总体时间,我正在考虑使用HTML DOM innerHTML
属性作为一个更好的性能选项,但这不起作用。内容被加载,但是Kendo控件没有被初始化,即使部分视图包含了用来初始化小部件的JS。
// this doesn't work
var container = document.getElementById("content_" + id);
container.innerHTML = result.Data.PartialView;
// this returns undefined,a nd $("#dropDownList_1").data() returns an empty {} object
$("#dropDownList_1").data("kendoDropDownList")
// but this works
$("#content_" + id).html(result.Data.PartialView);
来自部分视图的片段,其中包含用于初始化Kendo小部件的JS:
<input id="dropDownList_1" name="dropDownList_1" type="text" /><script>
jQuery(function(){jQuery("#dropDownList_1").kendoDropDownList({"dataSource":[{"Text":"Day","Value":"1"},{"Text":"Week","Value":"2"},{"Text":"Month","Value":"3"}],"dataTextField":"Text","dataValueField":"Value","optionLabel":"Please select"});});
</script>
有没有人知道为什么使用HTML DOM innerHTML属性不执行JS来初始化小部件?
jQuery.html()是一个更复杂的innerHTML包装器。它检查浏览器的兼容性,并对脚本进行评估。
使用html () .
为什么html()执行JavaScript,但innerHTML不't?
相关文章:
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 如何序列化包括影子 DOM 在内的 HTML DOM
- 通过Java加载XML并制作HTML DOM的一部分
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- HTML DOM Text() nodes
- 递归单步执行 HTML DOM 并打印属性
- 从自身获取对脚本作为 HTML DOM 元素的引用
- 我可以将 HTML 字符串分配给 HTML DOM 节点的内部 HTML 属性吗?
- Javascript HTML DOM select
- 如何反转 JavaScript 变量中 HTML DOM 元素的顺序
- 在 HTML DOM 元素下添加 javascript 文件或 css 文件
- HTML DOM - element.appendChild() 的行为不像我期望的那样
- HTML DOM 使用 AngularJS ng-if 函数
- PHP 简单 HTML DOM 和下拉元素已选选项
- 将 HTML DOM 保存到服务器上的文件
- 为什么我的 HTML 按钮刷新页面?/为什么我不能让我的新 HTML DOM 元素插入到我的页面中
- 节点上的 d3 事件处理程序不在 HTML DOM 中
- 如何转换 HTML DOM 结构
- HTML/DOM:鼠标事件更改按钮
- HTML DOM alerting style.width