SimpleModal确认并继续进行原始href

时间:2011-12-08 14:36:34

标签: jquery simplemodal confirm confirmation

我搜索并找不到解决方案。希望我忽略了一些简单的事情。

我所追求的是标准的jquery确认,la:

$('.confirm').click(function(){
    var answer = confirm('Delete '+jQuery(this).attr('title'));
    return answer // answer is a boolean
});    

但是,我想将SimpleModal用于警报窗口。我可以让SimpleModal显示并工作,如果我做任何事情除了尝试并获得原始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?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您需要修改点击处理程序以传递链接的网址:

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);
            });
        }
    });
}