javascript - 用于 javascript 的样式化警报系统

标签 javascript

我正在使用 smoke.js这允许设置经典警报 javascript 窗口的样式。

您所要做的就是将 .smoke 放在警报之前,即。 smoke.confirm()

我遇到的问题是 ok/cancel 回调,它对我不起作用。

这是网站显示的示例。

`您可以采用与使用 js alert() 相同的方式来实现这些...只需输入“smoke”即可。在它的前面。

但是,confirm() 替代品的使用方式略有不同:

smoke.confirm('You are about to destroy everything. Are you sure?',function(e){
    if (e){
        smoke.alert('OK pressed');
    }else{
        smoke.alert('CANCEL pressed');
    }
});

我的代码是;

$(".upb_del_bookmark").click( function() {
        if(smoke.confirm(delete_message)) {
            var post_id = $(this).attr('rel');
            var data = {
                action: 'del_bookmark',
                del_post_id: post_id
            };
            $.post(upb_vars.ajaxurl, data, function(response) {
                $('.bookmark-'+post_id).fadeOut();
                $('.upb_bookmark_control_'+post_id).toggle();
            });

它显示了样式按钮和所有内容,但是当我单击“确定”时它没有执行上述功能,没有任何反应。

Confirm

所以我重写了

$(".upb_del_bookmark").click( function() {
        if(smoke.confirm(delete_message, function(e))) {
            if(e){
            var post_id = $(this).attr('rel');
            var data = {
                action: 'del_bookmark',
                del_post_id: post_id
            };
            $.post(upb_vars.ajaxurl, data, function(response) {
                $('.bookmark-'+post_id).fadeOut();
                $('.upb_bookmark_control_'+post_id).toggle();
            });
        }}

但是现在当我点击它时甚至没有显示任何东西

我不是程序员,救命!!!!!!

如果你想尝试它,请使用 david:123321 登录 latinunit.org,然后转到一个帖子并尝试将其添加到你的收藏夹

更新

我尝试了以下方法,它显示了窗口但没有执行该功能;

$(".upb_del_bookmark").click( function() {
        smoke.confirm(delete_message, function(e) {
            if(e){
            var post_id = $(this).attr('rel');
            var data = {
                action: 'del_bookmark',
                del_post_id: post_id
            };
            $.post(upb_vars.ajaxurl, data, function(response) {
                $('.bookmark-'+post_id).fadeOut();
                $('.upb_bookmark_control_'+post_id).toggle();
            });
        }})
        return false;
    });

这里是smoke脚本的js文件Link

当我点击取消以下节目时;

Uncaught TypeError: Property 'callback' of object # is not a function Line:198 Uncaught TypeError: Property 'callback' of object # is not a function Line:208

下面是smoke脚本的那几行内容;

finishbuildConfirm: function (e, f, box)
    {
        smoke.listen(
            document.getElementById('confirm-cancel-' + f.newid),
            "click", 
            function () 
            {
                smoke.destroy(f.type, f.newid);
                f.callback(false);
            }
        );

        smoke.listen(
            document.getElementById('confirm-ok-' + f.newid),
            "click", 
            function () 
            {
                smoke.destroy(f.type, f.newid);
                f.callback(true);
            }
        );

最佳答案

内置的 javascript 警报/确认功能是同步的,这不是。您需要使用 javascript 回调模式处理确认结果。您将一个函数传递给 smoke.confirm() 函数,该函数在您需要响应操作时调用。

请看下面的代码。 smoke.confirm() 周围的 if 已被删除,处理代码包含在传递给 smoke.confirm() 函数的函数中。

$(".upb_del_bookmark").click( function() {
    smoke.confirm(delete_message, function(e) {
        if(e){
            var post_id = $(this).attr('rel');
            var data = {
                action: 'del_bookmark',
                del_post_id: post_id
            };
            $.post(upb_vars.ajaxurl, data, function(response) {
                $('.bookmark-'+post_id).fadeOut();
                $('.upb_bookmark_control_'+post_id).toggle();
            });
        }
    });
}

我强烈建议您阅读一些有关 javascript 中的回调模式的内容。它很常见,理解它会帮助您使用这个插件和许多其他插件。

关于javascript - 用于 javascript 的样式化警报系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369559/

相关文章:

javascript - 如何将数字保存到 localStorage 中,每次用户输入新数字时该数字都会递增?

javascript - 从客户端 Web 应用程序中提取 excel 内容

javascript - 使用 getImageData 使 Canvas 上的图像边缘褪色

javascript - 在 ID 等于 URL 最后一部分的 Span 上触发单击

javascript - 如何在 PrimeNG 表中使用多选过滤器?

javascript - 按另一个索引数组对数组进行排序

javascript - 联系表格 7 无法在 Bootstrap Modal 内工作

javascript - 为什么 bind(object) 不将 this 绑定(bind)到匿名函数中的对象?

javascript - 返回一个函数——没有记录到控制台

javascript - 在 jQuery 数据表中添加指向 Ajax 源数据的链接