在我的情况下,我有一些div和img标签。我正在应用可拖动的&可调整大小的操作仅适用于div元素。
在其中一个功能中,我们有“删除元素”功能,可以动态删除所选元素。一切正常,在删除函数调用之后,我再次对事件绑定进行操作,以便可调整大小和可拖动可以再次工作。 Draggable工作正常但可调整大小不会..
我尝试了许多组合,比如调用resizable(“destroy”)。resizable(),但没有任何效果。从dom生成的html运行时看起来很奇怪。
当我删除图像并且页面上出现dragClass div时出现问题。然后dragClass div不具有可调整大小的功能。请提出一些解决这个问题的想法。
以下是 jsFiddle Demo 链接。
以下是示例: -
<div id="ParentDIV" style="margin-left:200px; width:800px; height:500px; background:lightgray;">
<div class="dragClass"><p>Drag me around!</p></div>
<br /><br />
<img class="dragImgClass" src="logo3.JPG" />
<br /><br />
<img class="dragImgClass" src="logo4.JPG" />
</div>
<br /><br />
<input id="Btn4" type="button" onclick="deleteObj();" value="Remove Element" />
js: -
$(function () {
BindEvtHandlers();
}); //End of DOM Ready
function BindEvtHandlers() {
$(".dragImgClass").draggable({ delay: 100, containment: "#ParentDIV", scroll: false })
.on("click", selectAction);
$(".dragClass").draggable({ delay: 100, containment: "#ParentDIV", scroll: false })
.resizable()
.on("dblclick", editAction)
.on("click", selectAction)
.on("blur", "textarea", blurAction);
}
function selectAction() {
var $this = $(this); //get current obj.
if ($this.get(0).tagName == "IMG")
$('body').data('CBO', $this.attr('src'));
else
$('body').data('CBO', $this.find('p').html());
$('body').data('selObj', $this);
$this.fadeTo('slow', 0.3);
}
function deleteObj() {
var $selObj = $('body').data('selObj');
alert($selObj.outerHtml());
var cont = $('#ParentDIV').html();
cont = cont.replace($selObj.outerHtml(), "");
$('#ParentDIV').html(cont);
$(".dragImgClass").draggable({ delay: 100, containment: "#ParentDIV", scroll: false })
.on("click", selectAction);
$(".dragClass").resizable('destroy');
$(".dragClass").draggable({ delay: 100, containment: "#ParentDIV", scroll: false })
.resizable()
.on("dblclick", editAction)
.on("click", selectAction)
.on("blur", "textarea", blurAction);
}
答案 0 :(得分:0)
我找到了简单的解决方案。在deleteObj fn中,只需在第一行后面加一行,然后从fn中删除其余的代码。
$selObj.remove();
这将从DOM树中删除元素,而不是执行字符串操作。