我有一个jQuery对话框,我使用open
回调通过AJAX加载一些数据。
例如:
$('#dialog').dialog({
modal: true,
autoOpen: false,
open: function(){
$('.content', this).load('/path/to/file', function(){
// even more code
});
// more code
}
});
虽然对话框已经打开,但我想通过AJAX重新加载数据。我想我可以触发上面绑定的open
函数。我在the docs中读到你可以使用open
绑定到$(".selector").bind("dialogopen", function(event, ui){})
事件,所以我认为我也可以触发事件。
我试过了$('#dialog').trigger('dialogopen')
,但什么都没发生。如何触发jQuery对话框的open
事件?
目前,我发现我可以使用$('#dialog').dialog('option', 'open')()
,但这很难看,还有更好的办法!
答案 0 :(得分:3)
你可以重写你所拥有的内容,如$('#dialog').dialog('option')['open']()
(再次丑陋)
可以美化为,
var $dOpt = $('#dialog').dialog('option');
然后
$dOpt.open();
DEMO: http://jsfiddle.net/bj4hK/2/
我认为您正在寻找$('#dialog').dialog('open')
http://jsfiddle.net/bj4hK/
其他脏技巧是关闭并重新打开。 $('#dialog').dialog('close').dialog('open')
< - 但是,如果你有一些代码onclose
答案 1 :(得分:1)
为什么不在open事件中提取函数并在任何地方重用它?
$('#dialog').dialog({
modal: true,
autoOpen: false,
open: function(){
loadfunction()
}
});
function loadfunction(){
$('.content').load('/path/to/file', function(){
// even more code
});
// more code
}
因此您可以在任何地方使用loadfunction
。
答案 2 :(得分:0)
在jQuery UI中,通过调用窗口小部件名称并提供方法名称作为参数来调用方法。所以你可以这样做:
$('#dialog').dialog("open");