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