Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:添加带有bind/on和trigger函数的确认处理程序_Javascript_Jquery_Triggers_Bind_Confirm - Fatal编程技术网

Javascript JQuery:添加带有bind/on和trigger函数的确认处理程序

Javascript JQuery:添加带有bind/on和trigger函数的确认处理程序,javascript,jquery,triggers,bind,confirm,Javascript,Jquery,Triggers,Bind,Confirm,我试图在点击事件的许多链接、按钮或输入中添加一个确认框 我无法使用location.href、submit()或其他特定功能,因为: 例如,location.href在提交按钮上不起作用 例如,location.href不会触发其他绑定处理程序 所以我需要使用的是trigger()函数,它从理论上执行所有处理程序和本机操作。“困难”部分是执行所有处理程序,除了弹出确认框的处理程序 这是我的密码: $('a, button, input[type="submit"]').each(functi

我试图在点击事件的许多链接、按钮或输入中添加一个确认框

我无法使用location.href、submit()或其他特定功能,因为:

  • 例如,location.href在提交按钮上不起作用
  • 例如,location.href不会触发其他绑定处理程序
所以我需要使用的是trigger()函数,它从理论上执行所有处理程序和本机操作。“困难”部分是执行所有处理程序,除了弹出确认框的处理程序

这是我的密码:

$('a, button, input[type="submit"]').each(function() {

    var oButton = $(this);

    oButton.on('click.pending', function(oEvent) {
        console.log('click !');
        oEvent.preventDefault();

        var oDialog = $('<div class="dialog-example">[Question] ?</div>').dialog({
            buttons: {
                Cancel: function() {
                    console.log('cancelled !');
                    // Nothing to do
                    oDialog.dialog('close');
                },
                Ok: function() {
                    console.log('confirmed !');
                    // Trigger the rest of the handlers AND the native action, BUT not this one, so this dialog is not used
                    // Problem : nothing happens here
                    oButton.trigger('click.confirmed');
                    oDialog.dialog('close');
                }
            }
        });
    });

});
$('a,按钮,输入[type=“submit”]”)。每个(函数(){
var oButton=$(此项);
oButton.on('click.pending',函数(oEvent){
console.log('click!');
oEvent.preventDefault();
变量oDialog=$(“[问题]?”)。对话框({
按钮:{
取消:函数(){
console.log('cancelled!');
//无事可做
对话框(“关闭”);
},
好的:函数(){
console.log('confirmed!');
//触发其余的处理程序和本机操作,但不触发此操作,因此不使用此对话框
//问题:这里什么都没发生
oButton.trigger('click.confirm');
对话框(“关闭”);
}
}
});
});
});
提前谢谢!;)

您应该尝试:

oButton.off('click.pending').trigger('click').get(0).click();

你能创建一个提琴吗?提琴:在这种情况下,为了代码的“清晰”,我使用了这样的东西:(哦)很好!但是检查只做了一次。我想我需要在你的代码之后重新启动处理程序。单击锚定或提交应该会将用户重定向到新页面或重新加载当前页面,所以通常情况下,你不应该重新绑定事件。也就是说,您仍然可以使用引用的函数,并在触发事件后重新绑定它:没错,anchor或submit应该重定向,但例如,我使用的是Twitter引导选项卡选项卡:。仅当处理程序本身被删除时,我才重新绑定它。