【问题标题】:Styled alert system for javascript用于 javascript 的样式化警报系统
【发布时间】:2012-07-31 01:51:50
【问题描述】:

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

这里是烟雾脚本Link的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);
            }
        );

【问题讨论】:

  • 好像你缺少右括号/括号});
  • 检查浏览器中的 javascript 错误,这可能会告诉您问题所在。
  • “允许设置经典警报 javascript 窗口的样式” - 不,它没有。内置的警报/确认功能无法设置样式,因此smoke.js 替代了类似的东西,但是(尽管smoke.js 网页最初声称)这不仅仅是在@987654333 前面添加smoke. 的问题@ 和 confirm() 调用,你实际上需要重构你的代码以允许对烟雾函数的异步处理。
  • @nnnnnn 我同意,smoke.js 网站具有误导性,导致了这里的混乱。

标签: javascript


【解决方案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 回调模式的内容。这很常见,理解它会帮助您使用这个插件和许多其他插件。

【讨论】:

  • if 语句的右括号需要放在函数内,对吧?
  • 正确,我只是复制代码,没有检查语法。我已经更新了示例,干杯。
  • 我尝试了你的代码,但它没有做任何事情,我粘贴了我再次重写的内容,它与你的相似,除了结尾的壁橱刹车,它显示确认窗口,但它不执行其余代码
  • 您好,请检查更新问题,结束位包含错误代码
  • smoke.confirm() 的第二个参数必须是一个函数。该错误表明情况并非如此。我快速浏览了您的网站,发现 if(smoke.confirm(delete_message)==true) { 行与我的示例不匹配。我再次建议您学习一些有关 javascript 回调的知识,了解其工作原理至关重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 2015-12-28
  • 2022-01-06
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多