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

trr*_*rrm 4 javascript jquery dialog jquery-ui

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

$('#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
  }
});
Run Code Online (Sandbox Code Playgroud)

这称为:

$('a').live('click',function(){
  $('#dialog').dialog('open');
});
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Nic*_*ver 17

在您的.live()处理程序中,您可以存储对使用的元素的引用.data(),如下所示:

$('a').live('click',function(){
  $('#dialog').data('opener', this).dialog('open');
});
Run Code Online (Sandbox Code Playgroud)

然后为了得到它你可以从中获取它$('#dialog').data('opener'),或者$.data(this, 'opener')open回调的情况下(因为this引用了dialog元素).例如,您的open函数可能如下所示:

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

这将显示id您单击的锚点的属性以打开对话框...您可以执行任何您想要的操作,$.data(this, 'opener')指向<a />DOM元素.

你可以在这里试试这个