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

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

$('#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'); }); 

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

谢谢!

你可以给它一个id:

 $('a').live('click',function(){ $('#dialogTrigger').removeAttr('id'); $(this).attr('id', 'dialogTrigger'); $('#dialog').dialog('open'); } open: function(event, ui) { // do something with $('#dialogTrigger') } 

假设你有一个像这样的按钮:

  

和一些CSS如:

 .openerclass { background-color: red; } 

单击时添加该类

 $(function() { var myevent; $(".mybuttons").click(function(event){ myevent = $(event.target); $(".selector").dialog("open"); }); $(".selector" ).dialog({ open: function(event, ui) { var opener = $(event.target); myevent.addClass("openerclass"); alert(myevent.nodeName); ... } }); }); 

编辑:修复语法错误并添加另一个示例以使其清除

Edit2:原文错误(有点)因为opener事件与click事件没有关联。 修改为正确使用click事件。

你可以将$(this)分配给像me $(this)的变量并在以后使用它:

 $(".locked").on('click',function unlock(){ var me = $(this); buttons: { "Yes": function() { me.removeAttr('disabled').removeClass('locked'); }