-1

我正在使用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();
            });

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

确认

所以我把它改写为

$(".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;
    });

这是烟雾脚本链接的js文件

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

未捕获的类型错误:对象# 的属性“回调”不是函数行:198 未捕获的类型错误:对象# 的属性“回调”不是函数行:208

以下是烟雾脚本的那些行中的内容;

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);
            }
        );
4

1 回答 1

1

内置的 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 中的回调模式的信息。这很常见,理解它将帮助您使用此插件和许多其他插件。

于 2012-07-31T02:02:06.267 回答