4

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

$('.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,我想执行后一个函数(单击按钮时执行进程的函数)。

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

4

2 回答 2

3

不确定这是否是您想要的

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')元素上的单击事件处理程序的调用。


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

于 2012-05-25T09:10:14.200 回答
2

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

  1. e命名第二个函数,如果未定义则使其工作;它真正做的就是防止默认。然后,您可以从第一个事件中调用命名函数。

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

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

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

于 2012-05-25T09:14:31.623 回答