在其InnerHTML中附加HTML后,使Div再次可调整大小

用户名

我有一个简单的方法div,可以通过使用Jquery UI来调整大小

<div id="myid_templates_editor_text_1"></div>

jQuery代码:

$('#myid_templates_editor_text_1').resizable({
        animate: true,              
});

这样做之后,它可以正常工作。见下图:

在此处输入图片说明

在此处输入图片说明

div可以调整大小。使用jQuery调整div的大小后,div的代码结构将变为下面的代码。

<div id="myid_templates_editor_text_1" class="ui-resizable ui-draggable" style="width: 109px; height: 114px; position: absolute; left: 621px; top: 527px;">

    <div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;"></div>
    <div class="ui-resizable-handle ui-resizable-s" style="z-index: 90;"></div>
    <div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index: 90;"></div>

</div>

我想在可调整大小的div中放置文本,因此我决定通过在它的innerHTML后面附加HTML来在其中放置文本。参见下面的代码:

 var parent = document.getElementById('myid_templates_editor_text_1');      
 parent.innerHTML +=  '<p>Sample Text</p>';

成功追加后,div的调整大小功能会丢失吗?为什么?我应该怎么做才能使其正常工作?

BAM5

功能丢失是因为您用具有相同html代码的新dom元素替换了当前dom元素。您的代码本质上就是这样做的。

parent.innerHTML = parent.innerHTML + '<p>Sample Text</p>';

通过这样做,浏览器将清除以前存在于其中的parent所有dom元素并解析新的html,并创建所有新的dom元素。这些新元素没有像旧元素那样具有大小调整它们大小的侦听器。

一个好的解决方法是只使用子div元素并更改其内部html。对于更高级的路由,您可以通过dom操作来修改div。您还可以resizeable在设置innerHTML之后调用

但是不要resizable多次调用,因为您将开始创建对象的许多实例,这些实例的事件侦听器绑定到许多dom元素。您将创建内存泄漏。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章