gpt4 book ai didi

javascript - 为什么我的动态确认框只能工作一次?

转载 作者:行者123 更新时间:2023-12-01 02:28:12 29 4
gpt4 key购买 nike

我尝试创建一个自定义确认 UI 对话框,第一次尝试时效果很好,然后在第二次尝试运行它时,我不再收到有关我的选择的警报,并且窗口也不会关闭。这是为什么?我在这里还做错了什么,我可能忽略了?

这里是有问题的 HTML 和 Javascript:

<input type="button" id="Button" value="Click Me" />

$('#Button').click(function () {
confirmUI('is OK?', 'confirm', function () {
alert('click OK');
}, function () {
alert('click Cancel');
});
});


var confirmUI = function (text, title, callbackOkClose, callbackCancelClose) {
var $dialog = $('<div id="confirm_' + new Date().getTime().toString() + '"></div>');
$dialog.html('<div>' + title + '</div><div>' + text + '<div style="width:100%;"><input type="button" id="confirmCancel" value="Cancel" style="float:right;" /><input type="button" id="confirmOk" value="OK" style="float:right;margin-right: 10px" /></div></div>');
$('body').append($dialog);
var buttonString = '';
$dialog.jqxWindow({
minWidth: 300,
minHeight: 80,
draggable: true,
initContent: function () {
$('#confirmOk').jqxButton({
template: 'primary'
});
$('#confirmCancel').jqxButton({
template: 'default'
});
},
resizable: false,
closeButtonAction: 'close',
isModal: true,
okButton: $('#confirmOk'),
cancelButton: $('#confirmCancel')
});

$dialog.on('close', function (e) {
console.log('1');
if (e.args.dialogResult.OK) { //ok
if (callbackOkClose) {
callbackOkClose();
}
} else { //cancel or close
if (callbackCancelClose) {
callbackCancelClose();
}
}
});
return $dialog;
};

这是一个jsfiddle:http://jsfiddle.net/v0re8jeu/

最佳答案

因为您要为每次按钮单击创建该对话框,所以像 $('#confirmOk') 这样的东西不再是唯一的,并返回您第一次单击的按钮的选择器。您应该在关闭时将其从 dom 中删除,以便下一个可以工作:

$dialog.on('close', function (e) {
console.log('1');
$dialog.remove();

关于javascript - 为什么我的动态确认框只能工作一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48549020/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com