2

我想停止一个事件显示一个模式对话框,如果用户按下是,请执行此事件。event.run() 在 Firefox 中带来错误。

jQuery(element).click(function(event) {
    event.preventDefault();
    dialog.dialog({
        buttons: {
            'Ja': function() {
                event.run();
            },
            'Nein': function() {
                jQuery(this).dialog('close');
            }

        }
    }).dialog('open');
});

感谢一位朋友和 hashbrown,我设法解决了这个问题。一个事件不能被暂停和说服。如果它被暂停,它将阻塞整个 DOM。尝试:

jQuery(link).click(function(){while(true)});

使用 jQuery 时,可以设置我所做的其他事件参数:

jQuery(element).click(function(event, show_dialog) {
    var that = jQuery(this);
    if(!show_dialog) {
        dialog.dialog({
            buttons: {
                'Yes': function() {
                    that.trigger(event.type, [true]);
                },
                'No': function() {
                    jQuery(this).dialog('close');
                }

            }
        }).dialog('open');
        return false;
    } else {
        dialog.dialog('close');
        return true;
    }
});

首先单击 show_dialog 未定义并显示模态对话框。在模态对话框中单击 Yes 会触发 event.type(单击),其中 show_dialog 的附加参数为 true。http://api.jquery.com/trigger/#trigger-eventType-extraParameters

这是不可能的that.trigger(event, [true]);。我认为之前阻止了导致事件的默认操作。

4

1 回答 1

0

这是因为在创建弹出窗口后,函数立即返回并且事件过期。
你必须做的是.trigger()一个新的事件。

注意:设置某种全局变量以忽略匿名函数中触发的第二个事件(无限循环问题)。

我能问你为什么要这样做吗?click如果你让它发生,会发生什么?
如果它只是触发一个不同的函数,为什么不直接调用该函数而不是尝试event.run()呢?

于 2013-07-19T08:14:39.660 回答