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/


あなたはhttp://jsfiddle.net/bj4hK/を探していると思います$('#dialog').dialog('open')

他の汚いトリックは、閉じて再び開くことです。$('#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 に答える