将click事件的结果传递给调用函数

时间:2013-10-09 22:31:45

标签: javascript jquery

假设我有一个动态创建“确认或取消”对话框并将点击事件绑定到“确定”和“取消”链接的功能。

function confirmOrCancelDialog() {
    //already created $dialog to popup on screen

    $dialog.find('a.confirm').click(function() {
        //close dialog
        return true;
    });

    $dialog.find('a.cancel').click(function() {
        //close dialog
        return false;
    });

}

然后,我从另一个函数调用此对话框的创建。我想将交互的结果传递给调用函数。

function performAction() {
    var clickResult = confirmOrCancelDialog();

    if (clickResult === true) {
        //do some stuff
    }
}

任何有关如何做到这一点的指导将不胜感激。感谢。

3 个答案:

答案 0 :(得分:3)

function confirmOrCancelDialog(someStuff) {
    //already created $dialog to popup on screen

    $dialog.find('a.confirm').click(function() {
        //close dialog
        someStuff(true);
        return true;
    });

    $dialog.find('a.cancel').click(function() {
        //close dialog
        someStuff(false);
        return false;
    });

}
function performAction() {
    confirmOrCancelDialog(function(clickResult){
        if (clickResult === true) {
            //do some stuff
        }
    });
}

答案 1 :(得分:0)

你可以在对话框对象中的所有锚点上添加一个on click事件,然后检查被点击的锚点是否具有确认类(或取消,或者相应),并相应地返回:

$('.dialog a').on('click', function(event) {
  if ($(this).hasClass('confirm')) { return true; }

  return false;
});

答案 2 :(得分:0)

试试这个:

function confirmOrCancelDialog(callback) {
  //already created $dialog to popup on screen
  $dialog.find('a.confirm').click(function() {
    //close dialog
    callback(true);
  });

  $dialog.find('a.cancel').click(function() {
    //close dialog
    callback(false);
  });
}

function performAction() {
  confirmOrCancelDialog(function(clickResult){
    if (clickResult === true) {
      //do some stuff
    }
  });
}