首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对同一个jquery对话框的不同实例调用不同的操作?

如何对同一个jquery对话框的不同实例调用不同的操作?
EN

Stack Overflow用户
提问于 2016-02-02 10:17:08
回答 1查看 43关注 0票数 1

我刚刚开始处理jquery和对话框函数。我已经掌握了这样的基本原理:

代码语言:javascript
复制
$("#jquery-confirm").dialog({
  dialogClass: "jQdialog",
  autoOpen : false,
  modal: true,
  buttons: {
    Yes: function() {
      $(this).dialog('close');
      // do something for yes;
    },
    No : function() {
      $(this).dialog('close');
      // do something for no;
    }
  }
});

然后我可以调用对话框:

代码语言:javascript
复制
$("#button1").click(function() {
    OpenCustomDialog("Title 1");
});

function OpenCustomDialog(title) {
  $("#jquery-confirm").dialog("option", "title", title);
  $("#jquery-confirm").dialog('open');
} 

这很好,但是现在我想使用相同的对话框,但是要指定附加到Yes/No按钮的不同操作:

代码语言:javascript
复制
$("#button2").click(function() {
    OpenCustomDialog("Title 2");
});

如何更改“是”/“否”按钮的操作,取决于调用对话框的HTML元素(按钮1/按钮2)?

我最好的猜测是回调函数和/或闭包,但我无法理解它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 12:01:39

经典而简单的方法是创建一个新对话框,而不是重用旧对话框。由于您在问题中没有这样做,所以我假设您不想出于任何原因这样做;因此,您可以使用data属性:

代码语言:javascript
复制
var callbacks = {
    yes: {
        b1: function() { /*do something*/ }
        b2: function() { /*do something*/ }
    },
    no: {
        b1: function() { /*do something else*/ }
        b2: function() { /*do something else*/ }
    }
};

// ... etc.

  buttons: {
    Yes: function() {
      $(this).dialog('close');
      callbacks.yes[$(this).data("callback-target")]();
    },
    No : function() {
      $(this).dialog('close');
      callbacks.no[$(this).data("callback-target")]();
    }
  }

// .. etc.

$("#button1").click(function() {
    OpenCustomDialog("Title 1", "b1");
});

function OpenCustomDialog(title, callback) {
  $("#jquery-confirm").dialog("option", "title", title);
  $("#jquery-confirm").data("callback-target", callback);
  $("#jquery-confirm").dialog('open');
}

还请考虑将titlecallback参数绑定到OpenCustomDialog中作为按钮上的数据属性将使处理程序看起来更干净。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35150617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档