我有一个由许多按钮打开的对话框。我怎么知道哪个按钮打开了那个对话框?
$('#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>
标记已经调用了该对话框。这可能吗?
谢谢!
答案 0 :(得分:16)
在.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')
引用<a />
DOM元素。
答案 1 :(得分:0)
假设你有一个像这样的按钮:
<input type="button" class="mybuttons" value="Click Me"/>
和一些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事件。
答案 2 :(得分:0)
你可以给它一个id:
$('a').live('click',function(){
$('#dialogTrigger').removeAttr('id');
$(this).attr('id', 'dialogTrigger');
$('#dialog').dialog('open');
}
open: function(event, ui) {
// do something with $('#dialogTrigger')
}
答案 3 :(得分:0)
您可以将$(this)
分配给me
等变量,稍后再使用:
$(".locked").on('click',function unlock(){
var me = $(this);
buttons: {
"Yes": function() {
me.removeAttr('disabled').removeClass('locked');
}