在jQuery UI对话框上以编程方式触发事件

在jQuery UI对话框上以编程方式触发事件,jquery,jquery-ui,Jquery,Jquery Ui,我有一个jQuery对话框,我使用open回调通过AJAX将一些数据加载到jQuery中 例如: $('#dialog').dialog({ modal: true, autoOpen: false, open: function(){ $('.content', this).load('/path/to/file', function(){ // even more code }); // more

我有一个jQuery对话框,我使用
open
回调通过AJAX将一些数据加载到jQuery中

例如:

$('#dialog').dialog({
    modal: true,
    autoOpen: false,
    open: function(){
        $('.content', this).load('/path/to/file', function(){
            // even more code
        });
        // more code
    }
});
当对话框已经打开时,我想通过AJAX重新加载数据。我想我可以触发上面绑定的
open
函数。我读到,您可以使用
$(“.selector”).bind(“dialogopen”,function(event,ui){})
绑定到
open
事件,所以我想我也可以用这种方式触发事件

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


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

为什么不在open事件中提取函数并在任何地方重用它呢

$('#dialog').dialog({
    modal: true,
    autoOpen: false,
    open: function(){
        loadfunction()
    }
});

function loadfunction(){
  $('.content').load('/path/to/file', function(){
            // even more code
        });
        // more code
}

因此,您可以在任何地方使用
loadfunction

为什么不在open事件中提取函数,并在任何地方重用它呢

$('#dialog').dialog({
    modal: true,
    autoOpen: false,
    open: function(){
        loadfunction()
    }
});

function loadfunction(){
  $('.content').load('/path/to/file', function(){
            // even more code
        });
        // more code
}

因此,您可以在任何地方使用
loadfunction

您可以像
$(“#dialog”).dialog('option')['open']()(
)一样重写您拥有的内容

可以美化为,

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

$dOpt.open();
演示:


我想您正在寻找
$('#dialog')。dialog('open')


另一个肮脏的把戏是关闭和重新打开<代码>$('#dialog')。dialog('close')。dialog('open')您可以像
$('#dialog')。dialog('option')['open']()(
一样重写您拥有的内容

可以美化为,

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

$dOpt.open();
演示:


我想您正在寻找
$('#dialog')。dialog('open')


另一个肮脏的把戏是关闭和重新打开<代码>$('#dialog')。dialog('close')。dialog('open')在jQuery UI中,通过调用小部件名称并提供方法名称作为参数来调用方法。因此,您可以:

$('#dialog').dialog("open");

在jQueryUI中,通过调用小部件名称并提供方法名称作为参数来调用方法。因此,您可以:

$('#dialog').dialog("open");

如果对话框已经打开,那么这似乎不起作用。这就是我想要的。嗯,我没有意识到,
$(“#dialog”)。dialog('option')
返回了一个对象。当dialog不存在时,进行了UGLYD,但防止了错误:
($(“#dialog”).dialog('option')['close']| function(){})似乎不起作用。这就是我想要的。嗯,我没有意识到,
$(“#dialog”)。dialog('option')
返回了一个对象。当dialog不存在时,进行了UGLYD,但防止了错误:
($(“#dialog”).dialog('option')['close']| function(){})似乎不起作用。这就是我想要的。如果该对话框已打开,则在打开该对话框时已执行此操作。如果无论对话框是否已打开,都要执行某些操作,请编写一个执行此操作的函数,并调用
.dialog(“open”)
。我要做的是打开对话框,触发
open
函数,因此它会重新加载AJAX数据。最好的方法可能是nWorx的答案中的方法。如果对话框已经打开,这似乎不起作用。这就是我想要的。如果该对话框已打开,则在打开该对话框时已执行此操作。如果无论对话框是否已打开,都要执行某些操作,请编写一个执行此操作的函数,并调用
.dialog(“open”)
。我要做的是在对话框打开时,触发
open
函数,以便它重新加载AJAX数据。最好的方法可能是nWorx答案中的方法。这是个好主意。绝对比
$('#dialog').dialog('option','open')()干净。
.mm不错的一个。。我会简单地执行
open:loadfunction
以防在对话框open中没有任何额外的代码,这是个好主意。绝对比
$('#dialog').dialog('option','open')()干净。
.mm不错的一个。。我只需执行
open:loadfunction
,以防对话框中没有任何额外的代码处于打开状态