默认操作不会在新通话中重置

我在JavaScript中有一些防止默认的问题,特别是jQuery。 我试图让一个模式框显示带有“.confirm”类的元素,这些元素有效地覆盖默认动作,以确认他们在继续执行之前执行该动作之前,确认与用户确认做。

$('.confirm').on('click', function(event, options)
{
    options = options || {};

    if (!options.confirmed)
    {
        vex.dialog.confirm({
            message: 'Are you sure that you want to perform this action?',
            callback: function(response) {
                if (response === true) {
                    $(event.target).trigger('click', {confirmed: response});
                }
            }
        });

        event.preventDefault();
    }

});

  • 显示一个模式对话框。
  • 如果用户确认该操作,则再次触发点击事件,只有确认的这一次被传回给事件处理程序。
  • 这会跳过检查并继续执行默认操作。
  • 问题

    但事实并非如此,因为默认行为似乎无视未来发生的呼叫。

    尝试

  • 取消/重新绑定 - 要求用户再次单击它才能起作用。
  • window.location(不理想,因为它假设行动是一个链接,但工程)
  • 确认(不符合美观,所以需要更好的解决方案)
  • 笔记

  • 需要是异步的。
  • 任何帮助都会很棒,因为它暂时让我难住


    尝试使用$('.confirm').off()在您的回调中删除点击处理程序。 这样,当你以编程方式触发点击,你的点击处理程序被调用。


    在API调用之前放置event.preventDefault,这应该工作我猜。

    $('.confirm').on('click', function(event, options)
    {
        options = options || {};
    
        if (!options.confirmed)
        {
            event.preventDefault();
    
            vex.dialog.confirm({
                message: 'Are you sure that you want to perform this action?',
                callback: function(response) {
                    if (response === true) {
                        $(event.target).trigger('click', {confirmed: response});
                    }
                }
            });
    
    
        }
    
    });
    

    编辑:

    如你所说,我认为这是没有绑定/重新绑定的唯一方法。

    $('.confirm').on('click', function(event, options)
    {
        options = options || {};
    
        if (!options.confirmed)
        {
            event.preventDefault();
    
            vex.dialog.confirm({
                message: 'Are you sure that you want to perform this action?',
                callback: function(response) {
                    if (response === true) {
                        $(event.target).trigger('click', {confirmed: response});
                    }
                }
            });
    
    
        }
        else {
            window.location = $(this).attr("href");
        }
    
    });
    
    链接地址: http://www.djcxy.com/p/71707.html

    上一篇: Default action not resetting on new call

    下一篇: How to return boolean from confirm dialog plugin?