我们在cardView kendo.ui.Window项目中使用了大约3个DropDownList组件。当窗口关闭时,我们将为包含的每个DropDownList项目调用“ destroy”方法。
问题在于以下代码不会删除已附加到文档正文中的所有DropDownList的相关DIVS:
var dropdownlist = $("#dropdownlist").data("kendoDropDownList");
dropdownlist.destroy();
经过一番搜索之后,我们在销毁方法(来自Telerik)的文档中注意到以下注释:重要说明:该方法不会从DOM中删除DropDownList元素。
因此,每次有人打开和关闭剑道的窗口(卡片视图)时,都会添加许多DropDownList的div,而不会将其从DOM中删除-这会在DOM上引起严重的性能问题。
留在DOM上的附加DIVS是-例如“ k-list-container”和“ k-animation-container”。
destroy方法将删除附加在文档主体上且仅通过查看DOM不能清楚地与小部件关联的元素。因此,例如,k-animation-container
删除具有class的元素以进行下拉。文档中的注释说,就地元素不会被删除。
为了删除所有内容,您应该在小部件上调用destroy,然后自己删除其余元素。最简单的选择是在要销毁的所有小部件周围包含一个包装div元素,然后将其删除。如果要删除特定的窗口小部件,通常还可以引用该wrapper
属性,该属性包含表示此窗口小部件的最外层DOM元素的jQuery元素:
$(widget.wrapper).remove();
因此,在您的情况下,这将删除下拉菜单中的所有元素和事件:
var dropdownlist = $("#dropdownlist").data("kendoDropDownList");
dropdownlist.destroy();
dropdownlist.wrapper.remove();
如果要删除为剑道窗口创建的所有内容,可以执行以下操作:
var window = $("#window").data("kendoWindow");
// recursively call destroy for all widgets it finds
kendo.destroy(window.wrapper);
window.wrapper.remove();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句