每次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');
}
}
});}
答案 0 :(得分:1)
嘿,我使用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
答案 1 :(得分:0)
第一次在常规unit64_t to_uint64(std::string const & in) {
static_assert(sizeof(unsigned long long) == sizeof(uint64_t), "ull not large enough");
unsigned long long val = 0;
std::istringstream stream(in);
stream >> val;
return val;
}
选择器上调用.dialog()
时(即,第一次更改输入字段时),jQuery UI会向DOM追加div
是你的div
元素的兄弟。现在,再次更改输入字段,jQuery UI搜索input
以调用div
,并找到它在第一次调用后创建的.dialog()
并将其转换为对话框。正如您可能看到的那样,这个过程无限期地持续下去。
解决方案是将特定的类或ID分配给您要调用div
的{{1}},然后在调用div
时将该类或ID用作选择器