首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jQuery UI对话框重用行为

jQuery UI对话框重用行为
EN

Stack Overflow用户
提问于 2015-07-09 10:51:54
回答 2查看 548关注 0票数 2

每次onchange()事件触发时,对话框都会递归地嵌套在一个新层中。我怎么才能避免这种行为。不是版本特定的。

http://jsfiddle.net/rqLqtuj5/2/

代码语言:javascript
运行
AI代码解释
复制
<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');
        }
    }
});}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-09 11:10:54

嘿,我使用empty()命令来清除div,例如:

代码语言:javascript
运行
AI代码解释
复制
function popDialog(obj) {
    $('div').empty();
    $('div').dialog({
        buttons: {
            'Close': function () {
                $(this).dialog('close');
            }
        }
    });
}
代码语言:javascript
运行
AI代码解释
复制
<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

票数 1
EN

Stack Overflow用户

发布于 2015-07-09 11:15:21

第一次在常规的.dialog()选择器上调用div (即第一次更改输入字段)时,jQuery UI会将一个div附加到DOM中,这个div是您的input元素的同级。现在,再次更改输入字段,jQuery UI搜索要调用.dialog()div,并找到它在第一次调用后创建的div,并将其放入对话框中。正如你可能看到的那样,这个过程无穷无尽地持续着。

解决方案是将特定的类或id分配给要在其上调用div.dialog(),然后在调用.dialog()时使用该类或id作为选择器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31325897

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文