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