如何获取jquery ui对话框对象?
假设我打开了一个没有“id”的对话框,我怎样才能找到该对话框并获取对话框对象,这样我就可以在上面执行dialog('close') 范例如何获取jquery ui对话框对象?,jquery,jquery-ui,jquery-ui-dialog,Jquery,Jquery Ui,Jquery Ui Dialog,假设我打开了一个没有“id”的对话框,我怎样才能找到该对话框并获取对话框对象,这样我就可以在上面执行dialog('close') 范例 // say if this was my dialog <div> <input type="button" id="btn" /> </div> $("#btn").parents("div").dialog('close'); //如果这是我的对话框 $(“#btn”).parents(“div”).dia
// say if this was my dialog
<div>
<input type="button" id="btn" />
</div>
$("#btn").parents("div").dialog('close');
//如果这是我的对话框
$(“#btn”).parents(“div”).dialog(“close”);
但这不起作用,因此我需要获取实际对象。这正是您应该在这些div上具有id的原因。考虑以下选项:
.dialog()
之前,当您最初获取div时,请为它们指定动态id:el.attr('id','dialogBox')
.dialog('close')
。这也将为您执行缓存,因此您不需要再次搜索DOM树尽管仅供参考,但您的示例(使用最后一个选项)仍然有效:为什么不使用按钮选项?允许您通过$(this.dialog('close')关闭
还有,有没有理由不给部门一个id?无论如何,您必须以某种方式引用它来创建对话框。我相信找到与class
ui对话框内容最接近的div
应该可以:
$("#btn").click(function() {
$(this).parents("div.ui-dialog-content").dialog("close");
});
(.ui对话框内容
应用于原始的div
,然后将其包装在其他几个div
中)
下面是一个工作示例:只需找到当前活动元素的最近父元素,即对话框:
var dialog = $(document.activeElement).closest("div.ui-dialog-content");
如果有很多对话框都堆叠在一起,这很有用。请注意,通过jquery ui查找并关闭所有打开的jQueryUI对话框:
$(“:ui对话框”)。对话框(“关闭”) 只需保存jQuery从对话框返回的引用
var magic=$('').html(“Ta da!”).dialog()代码>
然后,您可以稍后使用该引用再次打开弹出窗口:
$(magic.dialog('open')代码>
或完全删除它(连同生成的.parent
包装):
$(magic.parent().remove()代码>
您甚至可以通过使用close
选项创建它(或稍后附加它),让它在关闭时删除自身:
close:function(ev,ui){$(this.remove();}
var-magic=null;
函数createMagic(){
magic=$('').html(“Ta da!”).dialog({
莫代尔:是的,
标题:“不是来自DOM”,
按钮:[{
单击:函数(){$(this).dialog(“close”);},
文本:“关闭我”
}],
秀:假,,
//关闭:函数(ev,ui){$(this.remove();}
});
updateMagicStatus();
}
函数showMagic(){
$(magic.dialog('open');
updateMagicStatus();
}
函数killMagic(){
$(magic.parent().remove();
updateMagicStatus();
}
函数updateMagicStatus(){
$(#MagicStatus')。文本(魔法);
$('#MagicPopStatus').text($('div.ui-dialog').length);
}
$(文档).ready(updateMagicStatus)代码>
创造一个神奇的模式
显示神奇模态
杀死魔法模态
Magic对象当前为:
jQUery UI弹出包装器:
我正在使用选项3,但在这一情况下,我丢失了对象(我没有丢失它,但我不想将它放在全局变量中存储)。@chobo2,我没有提到“全局”这个词。除了全局变量之外,还有其他存储对象的方法,例如jQuery的.data()
方法,或者更好的封闭局部变量。我知道您没有提到全局变量。我是说,我的情况下,这一个我可能需要使用它(可能有更好的方法,但我只是不知道他们)。我可以看看这个。data()不确定是什么。通常我只是传递dialog对象,但就像我在本例中所说的那样,我不能这样做。注意:如果两个对话框与此嵌套,则所有对话框都将关闭。添加:first
仅关闭当前对话框:$(this).parents(“div.ui-dialog-content:first”).dialog(“close”)
@RobW:或者,如果我正确理解问题,您可以使用最近的。在这里,我尝试了$(this)。parents('.ui dialog')。dialog('close')代码>--太近了!如何设置该对话框变量的调整大小事件?