带动作的jQuery通知

时间:2012-07-18 10:20:21

标签: javascript jquery notifications

我正在使用jQuery插件来显示通知。

所以我可以使用这样的东西

show_notification("Successfully Saved your data","success");

我们可以将html内容用作message

现在我想执行一些操作

离。

show_notification("Do you want to save your data","success");

所以这是用户的问题,用户需要点击yesno进行回复[两者都将作为html消息传递]

我需要做的是当用户点击是/否我需要执行某些操作时。

我可以使用idclass附加点击事件,但我有多种类型的操作,需要使用截然不同的idclass。< / p>

我可以使用回电功能吗?

请帮助我或给我你宝贵的建议。

谢谢。

注意:我知道使用当前插件是不可能的,而不是谈论它的功能,我只是想修改插件。

1 个答案:

答案 0 :(得分:0)

如果无法向您的插件发送回调,则必须手动将“是/否”按钮添加到您的消息中,并通过在线代表或在通知发布后指定一个侦听器来定位它们。所示。

$(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');

如果您使用的是this plugin,则您希望听众致电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() { } }
    ]
});

但是,当然,如果没有机会看看你目前使用的插件是什么样的话,这种情况几乎无法帮助你。