点击事件后的javascript函数回调

时间:2015-01-14 09:42:14

标签: javascript jquery

这是我的代码

function confirm(){

    okBtn.on('click', function(){
        // return true from confirm function
    });
    cancelBtn.on('click', function(){
        // return false from confirm function
    });
}


if(confirm()){
    // make something. I need to keep this code here, not in confirm function
}

我需要在点击okBtn或cancelBtn后执行回调。我需要保持回调代码不在函数中,因为我有很多使用这个函数的情况。

4 个答案:

答案 0 :(得分:4)

使confirm函数接受回调并在事件处理程序中调用它:

function confirm(callback){
    okBtn.on('click', function(){
        callback(true);
    });
    cancelBtn.on('click', function(){
        callback(false);
    });
}


confirm(function(result) {
    // make something. I need to keep this code here, not in confirm function
});

但是没有办法同步处理事件处理程序(就像你似乎打算这样做)。您必须绑定事件处理程序的原因是您不知道事件何时发生。相反,您必须对此事件做出反应。你必须习惯这种编码方式,没有办法解决。

答案 1 :(得分:1)

您可以简单地创建一个标志并根据用户操作进行更改,而不是使用额外的功能:

var confirm_flag; // this is undefined, which means that no actions have been taken

okBtn.on('click', function(){
    validate(true);
});
cancelBtn.on('click', function(){
    validate(false);
});

然后,根据用户输入,您可以确定要采取的操作方案:

function validate(flag) {
    if(flag) {
        alert("okBtn has been clicked, it's safe to continue");
    }else{
        alert("Not good!");
    }
}

如果要使用确认弹出窗口中的返回值,只需将Window confirm()函数指定给变量即可 - 如果用户单击“确定”,则返回true

var x = confirm('Is it safe?'); // will pop a confirm dialog box and return true if ok is pressed and false if cancel is pressed

答案 2 :(得分:0)

http://jsfiddle.net/abwzq32s/

html 

<button type="button" id='button1'>confirm</button>
<button type="button" id='button2'>cancel</button>



js 

$('#button1').click(function(){
confirm(true);
});
$('#button2').click(function(){
    confirm(false);
});

function confirm(check){
    if(check){
        alert('ok');
    }else{
        alert('cancel');
    }
}

我为你做了一个小样本。您可以在if条件中编写代码,也可以在函数非常长的情况下调用另一个函数

答案 3 :(得分:0)

根据我的理解,你想要的只是当用户点击okBtn时执行一些代码,当用户点击cancelBtn时执行一些代码。如果你可以这样改变你的代码

function confirm(callback)
{

    okBtn.on('click', function(){
        // return true to the callback
        callback(true)
    });
    cancelBtn.on('click', function(){

        // return false to the callback
         callback(false)
    });
}
confirm(function(confirmed){
    if(confirmed)
    {
    // make something
    }
    else
    {
    // do something
    }
});