我的色盒上有一个确认框(“确定要离开吗?”)。
当我关闭弹出窗口时触发。当我在弹出窗口中单击“ cboxClose” div时,此方法有效。

我试图在单击按钮时显示此确认框。但是弹出窗口只是立即关闭而不显示确认框。

我的问题是,当我单击取消按钮时,如何触发确认框。我尝试了几种方法

//这只是关闭弹出窗口而不显示确认框

$('#btnCancel').click(function () {
                 parent.$.colorbox.close(); });


//不起作用

$('#btnCancel').click(function () {
                     $('#cboxClose').click()
                  });


彩盒

onComplete: function () {
 $("#cboxClose").click(function (e) {

                    // stop any other script from firing
                    e.stopPropagation();
                    if (confirm('are you sure you want to leave?')) {
                        $.colorbox.close();
                        // ensure that the binding is removed when closed
                        $("#cboxClose").unbind();
                    }

                });

            } // close oncomplete

最佳答案

这里的问题是,colorbox在cboxClose元素上注册了一个单击处理程序。结果,停止鼓泡或阻止单击(在单击处理程序中通过returning false)都不会产生任何效果,因为颜色框处理程序已经注册。阻止该处理程序运行的唯一方法是取消绑定。但是,要做到这一点,您需要对处理程序的引用,而无需修改颜色框代码就不会获得该引用。

无论如何,这就是正在发生的事情,也是为什么上面的代码不起作用的原因。另一个选择是覆盖colorbox关闭函数(这是由colorbox的关闭按钮处理程序调用的公共colorbox方法)。您需要的是:

$.colorbox._close = $.colorbox.close;
$.colorbox.close = function() {
    if(confirm("Close?")) {
        $.colorbox._close();
    }
}


不利的一面(在您的情况下可能不是问题)是,这将影响页面上的所有颜色框。

关于javascript - 使用按钮关闭颜色框弹出窗口并触发确认框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14839017/

10-10 17:52