我有一个简单的方法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的调整大小功能会丢失吗?为什么?我应该怎么做才能使其正常工作?
功能丢失是因为您用具有相同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] 删除。
我来说两句