0

メカニズムでjQueryダイアログを作成しています。widget factory

関数 ($) {

    function myDialogDiv() {...} // ダイアログに必要なすべての HTML を作成します

    $.widget("myApp.myDialog", {

        _create:関数() {
            var div = myDialogDiv();
            var props = {autoOpen:false, height:'200', width:'30%'};
            var onClose = 関数 () {};
            $(div).dialog(props, onClose);
        }、

        _init:function() {$('#myDialog').dialog('open');}
    }))

}(jQuery))

...

// ボタンクリックでダイアログを開く
$('.myDialogBu​​tton').bind("クリック", function(){$(this).myDialog();});

それはうまくいきます。.なしjQueryダイアログを作成できるかどうか疑問に思います。widget factory

4

1 に答える 1

1

確かに、独自のダイアログ ライブラリを作成するか、独自の初期化スキームを持つ別のライブラリを使用できます ;-)

それが失敗しても、いいえ。jQuery ダイアログ (すべての jQuery UI ウィジェットと同様) には特定の初期化パラメーターのセットが必要であり、ウィジェットが必要になるたびにそれらを再現するか、「ウィジェット ファクトリ」スタイルを使用してビルダー内のすべての初期化要素を非表示にすることができます。関数。

また、jQuery UI は、jQuery と同様に、すべてを実行しようとするわけではないことに注意する必要があります。ボタンをダイアログの生成に接続します。他の誰かが A タグを使用したり、他の誰かが DIV を使用したりする可能性があるため、これは考えてみれば理にかなっています。あなたの側でコードを書いてください。

私が見ることができる他の唯一のオプションは、毎回ダイアログを作り直す半々のアプローチですが、オプションのグローバルセットを使用して繰り返しを節約します。

var GLOBAL_DIALOG_PROPS = {autoOpen:false, height:'200', width:'30%'}
function dialogButtonClickHandler() {
    $(this).myDialog().dialog(GLOBAL_DIALOG_PROPS, onClose).dialog('open');
}
$('.myDialogButton').bind("click", dialogButtonClickHandler); 

しかし、最終的には初期化作業を行う必要があり、コード内の複数の場所でそれを行う場合は、それを乾燥させて共通ビットをどこかに保存するのが賢明です (ウィジェット ファクトリなど)。 .

于 2012-07-22T18:16:57.720 に答える