我的DOM中有一个自动完成文本框(使用jquery)。我有一个场景,我需要在单击按钮的对话框中显示此自动完成文本框。仅在对话框视图中自动填充内容,然后在关闭对话框时将自动完成文本框设置回DOM。这是样本:
$("#autocom-div button").click(function(){
$("#autocom-div #autocomplete").detach().dialog({
close: function(){
$(this).removeClass('ui-dialog-content ui-widget-content').removeAttr('style');
$('#autocom-div button').before(this);
}
});
});
jsfiddle链接相同:
http://jsfiddle.net/s24101984/EBduF/350/
问题:当我第二次点击按钮时
答案 0 :(得分:1)
问题不在于detach()
,而在于dialog()
。您必须在创建另一个对话框之前销毁该对话框的现有实例。因为destroy方法也会移除div
托管,所以你需要首先克隆它:
$("#autocom-div button").click(function()
{
var parent = $("#autocom-div"),
elm = $("#autocomplete"),
clone = $("#autocomplete").clone();
$("#autocomplete").detach().dialog({
close: function(){
parent.prepend(clone);
$(this).dialog('destroy').remove();
}
});
});