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'); });
谢谢!
在.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
属性以打开对话框…您可以执行任何您想要的操作, $.data(this, 'opener')
指的是 DOM元素。
你可以在这里试试这个
你可以给它一个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'); }