理查德库克在上面评论说,原始答案(由 Konstantin Azizov 提供)停止使用 SweetAlert2 的 4.2.6 版。他建议这与将节点添加到 html 时被克隆有关。我对 SweetAlert2 的了解还不够,无法判断他是否正确。不过,我可以看到,我的按钮已添加,但 onclick 回调函数从未被调用。
稍加努力,我就能让它与当前版本的 SweetAlert2 一起工作。为了使它工作,我必须稍后将 onclick 事件分配给按钮。我最终为按钮添加了 id,使它们易于从 jQuery 中选择。然后我将 onOpen 函数添加到我的 swal 对象中,并在其中连接逻辑以关联回调函数。下面是对我有用的代码片段。
另请注意,消息和按钮使用一些现有的 SweetAlert2 类,因此它们与现有的 UI 元素具有相同的外观。提醒一句,我确实尝试过使用 swal2-confirm 和 swal2-cancel 类。当我这样做时,我遇到了一些问题。SweetAlert2 代码可能仅依赖于使用该类的单个元素。我没有时间追究它,所以我只是停止使用这些课程。
function createButton(text, id) {
return $('<button class="swal2-input swal2-styled" id="'+id+'">'+text+'</button>');
}
function createMessage(text) {
return $('<div class="swal2-content" style="display: block;">'+text+'</div>');
}
function swThreeButton(msg, textOne, textTwo, textThree, callbackOne, callbackTwo, callbackThree) {
var buttonsPlus = $('<div>')
.append(createMessage(msg))
.append(createButton(textOne,'sw_butt1'))
.append(createButton(textTwo,'sw_butt2'))
.append(createButton(textThree,'sw_butt3'));
swal({
title: 'Select Option',
html: buttonsPlus,
type: 'question',
showCancelButton: false,
showConfirmButton: false,
animation: false,
customClass: "animated zoomIn",
onOpen: function (dObj) {
$('#sw_butt1').on('click',function () {
swal.close();
callbackOne();
});
$('#sw_butt2').on('click',function () {
swal.close();
callbackTwo();
});
$('#sw_butt3').on('click',function () {
swal.close();
callbackThree();
});
}
});
};