我已经搜索过,但没有找到解决方案。希望我忽略了一些简单的事情。
我追求的是标准的 jquery 确认,a:
$('.confirm').click(function(){
var answer = confirm('Delete '+jQuery(this).attr('title'));
return answer // answer is a boolean
});
但是,我想使用 SimpleModal 作为警报窗口。如果我做任何事情除了,如果在 SimpleModal 对话框中单击"is",尝试让原始 href 继续进行,我就可以让 SimpleModal 显示并工作。
目前的代码......
jQuery(function ($) {
$('.confirm').click(function (e) {
e.preventDefault();
confirm("", function () {
//alert('yes');
$('.confirm').trigger('click');
});
});
});
function confirm(message, callback) {
$('#confirm').modal({
closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
position: ["20%",],
overlayId: 'please-wait',
containerId: 'confirm-container',
onShow: function (dialog) {
var modal = this;
$('.message', dialog.data[0]).append('Delete '+$('a.confirm').attr('title'));
// if the user clicks "yes"
$('.yes', dialog.data[0]).click(function () {
// call the callback
if ($.isFunction(callback)) {
callback.apply();
}
// close the dialog
modal.close();
});
}
});
}
我还在确认功能中注释掉了一条警报。警报确实有效。但如何让浏览器继续原来的href呢?
谢谢!
最佳答案
首先,您需要修改点击处理程序以传递链接的 URL:
jQuery(function ($) {
$('.confirm').click(function (e) {
e.preventDefault();
confirm($(this).prop("href"), "", function () {
$('.confirm').trigger('click');
});
});
});
如果您使用的是 jQuery 1.6 或更低版本,请使用 $(this).attr("href")
而不是 .prop()
然后修改函数以使用该 url:
function confirm(url, message, callback) {
$('#confirm').modal({
closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
position: ["20%",],
overlayId: 'please-wait',
containerId: 'confirm-container',
onShow: function (dialog) {
var modal = this;
$('.message', dialog.data[0]).append('Delete '+$('a.confirm').attr('title'));
// if the user clicks "yes"
$('.yes', dialog.data[0]).click(function () {
// call the callback
if ($.isFunction(callback)) {
callback.apply();
}
// close the dialog
modal.close();
// transfer to the url:
window.location.assign(url);
});
}
});
}
关于jquery - SimpleModal 确认并继续原始 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432629/