1

我有一个 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上面绑定的函数。我在文档中读到您可以使用 绑定到该open事件$(".selector").bind("dialogopen", function(event, ui){}),所以我想我也可以通过这种方式触发该事件。

我试过$('#dialog').trigger('dialogopen')了,但什么也没发生。如何触发openjQuery 对话框的事件?

目前,我发现我可以使用$('#dialog').dialog('option', 'open')(),但这很难看,必须有更好的方法!

4

3 回答 3

3

你可以重写你所拥有的$('#dialog').dialog('option')['open']()(再次丑陋)

可以美化为,

var $dOpt = $('#dialog').dialog('option');

接着

$dOpt.open();

演示:http: //jsfiddle.net/bj4hK/2/


我想你正在寻找$('#dialog').dialog('open') http://jsfiddle.net/bj4hK/

其他肮脏的技巧是关闭并重新打开。$('#dialog').dialog('close').dialog('open')<- 但是,如果您有一些代码,这会搞砸onclose

于 2012-10-25T18:01:42.820 回答
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任何你想要的地方使用。

于 2012-10-25T18:01:25.487 回答
0

在 jQuery UI 中,通过调用小部件名称并提供方法名称作为参数来调用方法。所以你可以这样做:

$('#dialog').dialog("open");
于 2012-10-25T18:02:42.780 回答