我是否可以在事件中调用另一个事件处理程序



我有这两组代码,一是点击按钮时提示,

$('.button_class').click(function(){
    var baker_url = base_url + 'baker/baker/manage/Bread/1';
    var answer = confirm('Are you sure?');
    if(answer == true){
        // if this is true, i will call an external script so that within this condition that process will be executed
    }
    else if(answer == false){
        return false; // exits
}
});

然后这里的这段代码是负责在单击按钮时执行该过程的代码,

$('.another_button_class').click(function(e){
        e.preventDefault();
        var baker_url = base_url + 'baker/baker/manage/Bread/1';
        var form    = '#'+ $(this).attr('rel');
        var url     = $(form).attr('action');
        var target  = '#'+ $(form).attr('rel');
            $(target).slideUp();
            $.post(url, $(form).serialize(),function(data) {
                $(target).html(data).slideDown(function(){
                    if(data == '<div class="ok">Added</div>'){
                    setTimeout(refresh,1000)
                    c();
                    window.location = baker_url; // sets the url after refreshing
                    }
                });
            });
    });

在第一个函数中,当answer == true时,我想执行后一个函数(单击按钮时执行进程的函数)。

我真的可以调用另一个函数或事件处理程序来在另一个函数中执行其进程吗?

不确定这是否是你想要的

if(answer == true){
    // if this is true, i will call an external script so that within this condition that process will be executed
    $('.another_button_class').trigger('click');
}

这将触发对绑定在 $('.another_button_class') 元素上的 click 事件处理程序的调用。


确保在第一次单击时也使用e.preventDefault();,否则链接将被跟踪

如果我

正确理解了这个问题,那么当您单击按钮#2或单击按钮#1并在提示中单击"是"时,您需要发生效果?如果是这样,我可以想到三个选项:

  1. 命名第二个函数,并在未定义e时使其工作;它真正用它做的只是防止默认值。然后,可以从第一个事件调用命名函数。

  2. 更好的版本1:创建一个新函数,该函数可以执行除第二段代码中的e.preventDefault();之外的所有操作。然后,您可以从这两个事件中调用它。

  3. 使用 jQuery 模拟第二个按钮的单击事件(如果在第一个按钮上选择了"yes"。

编辑 在这种情况下,第二个会更可取。如果您确实需要事件对象来做某事,请使用第三个。

相关内容

  • 没有找到相关文章

最新更新