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

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

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

这是网站显示的示例。

`您可以使用与js alert()相同的方式来实现这些……只是放上“烟雾”。在它前面。

但是,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;
    });


这是Smoke脚本Link的js文件

当我单击取消时,显示以下内容;


  未捕获的TypeError:对象#的属性“回调”不是
  功能线:198
  未捕获的TypeError:对象#的属性“回调”不是
  功能线: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);
            }
        );

最佳答案

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

07-24 09:18