如果无法向您的插件发送回调,则必须手动将“是/否”按钮添加到您的消息中,并通过实时代表或在显示通知后分配侦听器来定位它们。
$(function() {
$('body').on('click', '.notification-yes', function() {
// yes-callback
});
$('body').on('click', '.notification-no', function() {
// no-callback
});
});
show_notification('Do you want to proceed? <button class="notification-yes">Yes</button> <button class="notification-no">No</button>', 'success');
如果你使用的是这个插件,你会希望你的听众调用closeNotification()
. 我意识到语法并不完全相同,但这可能是一个版本问题。如果我们知道您正在使用的插件的详细信息,则可以更轻松地帮助您了解具体情况。
您还需要一种方法来了解单击按钮时显示的通知。您当然可以为不同的通知设置唯一的按钮类名称。如果在任何给定时间总是只显示一个通知,另一种方法是为感兴趣的回调设置一个小的状态对象。例如:
var myNotifications = {
onYes: function() { },
onNo: function() { }
};
$(function() {
$('body').on('click', '.notification-yes', function() {
myNotifications.onYes();
closeNotification();
});
$('body').on('click', '.notification-no', function() {
myNotifications.onNo();
closeNotification();
});
});
function showCertainNotification() {
myNotifications.onYes = function() {
// specific callback for this notification.
};
show_notification('Confirm? <button class="notification-yes">Yes</button> <button class="notification-no">No</button>', 'success');
}
如果在任何时候都可能显示多个通知,那么像这样的简单变量将无法做到。在这种情况下,您必须将您的消息包装在一个容器中,您可以从您的侦听器中提取其 ID,并基于此调用特定的回调,或将其作为参数传递。我不会在这里详细介绍,因为 的简单性质show_notification
意味着 的同样简单的方式close_notification
。由于似乎找不到任何 ID,因此我假设不支持多个活动通知。
一个更吸引人的解决方案可能是修改插件本身,而不是解决它,以便您可以将回调函数直接传递给插件。像这样的东西:
show_notification({
message: 'Confirm',
type: 'success',
buttons: [
{ caption: 'Yes', click: function() { } },
{ caption: 'No', click: function() { } }
]
});
但是,当然,这几乎不可能帮助您,除非您首先有机会查看您当前使用的插件的外观。