每次onchange()事件触发时,对话框都会递归地嵌套在一个新层中。我怎么才能避免这种行为。不是版本特定的。
http://jsfiddle.net/rqLqtuj5/2/
<input type=text onchange="popDialog(this)" value="test">
<div style="display:none">
<p>dialog box</p>
<div>
function popDialog(obj) {
$('div')
.dialog({
buttons: {
'Close': function () {
$(this).dialog('close');
}
}
});}
发布于 2015-07-09 11:10:54
嘿,我使用empty()
命令来清除div,例如:
function popDialog(obj) {
$('div').empty();
$('div').dialog({
buttons: {
'Close': function () {
$(this).dialog('close');
}
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<p>Change the value in the text box and hit tab ...close the dialog and do it again, and again</p>
<input type=text onchange="popDialog(this)" value="test">
<div style="display:none">
<p>dialog box</p>
<div>
这样做更好:JSBIN
发布于 2015-07-09 11:15:21
第一次在常规的.dialog()
选择器上调用div
(即第一次更改输入字段)时,jQuery UI会将一个div
附加到DOM中,这个div
是您的input
元素的同级。现在,再次更改输入字段,jQuery UI搜索要调用.dialog()
的div
,并找到它在第一次调用后创建的div
,并将其放入对话框中。正如你可能看到的那样,这个过程无穷无尽地持续着。
解决方案是将特定的类或id分配给要在其上调用div
的.dialog()
,然后在调用.dialog()
时使用该类或id作为选择器。
https://stackoverflow.com/questions/31325897
复制相似问题