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

Javascript 我是否可以在事件中调用另一个事件处理程序?,javascript,jquery,event-handling,Javascript,Jquery,Event Handling,我有两套代码,一套是每次点击按钮都会提示 $('.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 th

我有两套代码,一套是每次点击按钮都会提示

$('.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
                    }
                });

            });
    });
然后这段代码就是负责在点击按钮时执行流程的代码

$('.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
                    }
                });

            });
    });
$('.另一个按钮\类')。单击(函数(e){
e、 预防默认值();
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');
$(目标).slideUp();
$.post(url,$(表单).serialize(),函数(数据){
$(目标).html(数据).slideDown(函数(){
如果(数据==‘已添加’){
设置超时(刷新,1000)
c();
window.location=baker\u url;//设置刷新后的url
}
});
});
});
在第一个函数中,当
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');
}
这将触发对
$('.other_button_class')
元素上绑定的click事件处理程序的调用



确保使用
e.preventDefault()
  • 如果
    e
    未定义,则命名第二个函数并使其工作;它真正做的就是防止违约。然后可以从第一个事件调用命名函数

  • 1的更好版本:创建一个新函数,它除了
    e.preventDefault()之外,什么都可以做在第二段代码中。然后,您可以从两个事件中调用它

  • 如果在第一个按钮上选择了“是”,则使用jQuery模拟第二个按钮的单击事件


  • 编辑在这种情况下,第二个选项更可取。如果您确实需要事件对象来执行某些操作,请使用第三个脚本。

    External script在这个意义上??External的意思是,将调用另一个事件处理程序来执行某些进程。脚本是整个执行上下文,“External”表示它位于自己的文件中。请使用术语“函数”和“(事件)处理程序”。@Bergi,对不起,伙计,我保证我会使用正确的术语。谢谢。从你上面所说的,我想你的结论是我有两个按钮,但我没有。这是一个按钮,实际上有两个类。那么第二个代码会在哪种情况下执行呢?如果选择“是”
    ,那么为什么不能将第二位代码放在第一位的if语句中?当你选择“是”时,它会执行,对吗?事实上,你是对的,马克,但我想要的是,在执行流程之前,会出现一个确认,哦,嘘,你能说如果我将流程本身放入条件中而不是调用它,这是可能的吗??我现在就想到了这件事。。该死的,我把我的进程执行放在if条件中,所以如果答案==真,那么它就会执行。谢谢,伙计,我想接受你的答案是正确的是合适的。这不会成功的,伙计,太糟糕了。即使我的答案=false,它仍然会执行这个过程。假设,如果答案=false,那么什么也不会发生。怎么办?多谢了,老兄,尝试了你的解决方案,但我并不感到惊讶,我需要另一件事来让它工作。但是你的回答很好,这才是我想要的。谢谢,先生非常好的解决方案,非常感谢
    onkeypress=“$('#i#u字段_id')。触发器('blur')”
    在我的案例中起作用。