1

我有以下代码用于使用 Bootstrap 模式进行确认对话框,它应该在闭包中调用

this.events.register(this, function(e) {

  this.makeModal(e);

  // this is what used to work for me
  /*
  if (confirm('Are you sure?')) {
    alert(e.data);
  } else {
    // DO NOTHING
  }
  */
});

makeModal: function(e) {    

  //...

  $(btnCancel).on("click", $(modal).modal('hide'));
  $(btnConfirm).on("click", alert('confirm'));
}

只有两个按钮,即 btnCancel 和 btnConfirm。问题是在调用外部函数后,内部警报也会立即触发,这使得确认对话框无用。我怎样才能解决这个问题?出于特定原因,我不能使用 bootbox 等库。

或者我可以从这个模式中返回是或否吗?如果是这样,我该怎么做?

先感谢您!


编辑:这是我返回是或否的糟糕尝试:

makeModal: function(e) {    

  //...
  var choice;
  $(btnCancel).on("click", choice = false);
  $(btnConfirm).on("click", choice = true);
  return choice;
}
4

1 回答 1

3

这是实现您尝试做的另一种方法的示例:

$('#myModal').bind('show', function() {
    var id = $(this).data('id'),
    yesBtn = $(this).find('.danger');
    $(yesBtn).data('id', id);

}).modal({ backdrop: true });

$('.delete-button').click(function(e) {
    e.preventDefault();
    var id = $(this).data('id');
    $('#myModal').data('id', id).modal('show');
});

$('.danger').click(function(){
    var id = $(this).data('id');
    $('#myModal').modal('hide');
    alert('Deleting: ' + id);
    //Do something with id
});

点击这里查看 JsFiddle

于 2013-03-22T21:29:03.013 回答