javascript - jquery如何获取打开对话框的按钮

标签 javascript jquery jquery-ui dialog

我有一个由许多按钮打开的对话框。我怎么知道是哪个按钮打开了那个对话框?

$('#dialog').dialog({
  autoOpen: false,
  buttons: {
    "Ok": function() { 
      $(this).dialog("close");
    }, 
    "Cancel": function() { 
      $(this).dialog("close");
    } 
  },
  open: function(event, ui) {
    //HERE ::: how to get an HTML OBJECT TO THE ELEMENT THAT OPENED THE DIALOG
  }
});

调用者:

$('a').live('click',function(){
  $('#dialog').dialog('open');
});

我想知道哪个<a>标记调用了该对话框。这可能吗?

谢谢!

最佳答案

在你的 .live() 处理程序,您可以存储对使用 .data() 单击的元素的引用,像这样:

$('a').live('click',function(){
  $('#dialog').data('opener', this).dialog('open');
});

然后要稍后获取它,您可以从 $('#dialog').data('opener') 中获取它, 或 $.data(this, 'opener') open 的情况下回调(因为 this 指的是对话框元素)。例如你的 open函数可能如下所示:

open: function(event, ui) {
  $(this).html("Hi, I was opened by: " + $.data(this, 'opener').id);
}

这将显示 id您单击以打开对话框的 anchor 的属性...您真的可以做任何您想做的事, $.data(this, 'opener') 指的是<a /> DOM 元素。

You can give try a demo of this here

关于javascript - jquery如何获取打开对话框的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292498/

相关文章:

javascript - 如何使用以下 Grunt 配置编译 Sass 文件?

javascript - react "Maximum update depth exceeded."

jquery - 如何在 ASP.NET MVC 4 和 jquery 中使用 Web api 下载文件

由于父 div 在页面加载时被隐藏,JavaScript 没有被执行?

javascript - 使用 jQuery UI 选项卡防止异常

javascript - Jquery UI 日期选择器日期格式

javascript - 如何修复增量按钮将数字添加到值的末尾而不是在 onChange 之后递增

javascript - 自动垂直翻转后的文本居中

javascript - 需要将这两个JavaScript函数转换为jquery

jquery - 如何使用 jQuery 使 div 的所有 4 个角都有可调整大小的 handle ?