0

私はコンテナといくつかのアクションを持っています

<div id="container"></div>

<a href="#" class="action" id="add">Add user</a>

<a href="#" class="action" id="view">View user</a>

一意のコンテナを使用して任意のページをロードしていることに注意してください。アクションをクリックすると、クリックイベントがトリガーされます

// dialog settings
var settings = {
    add:{
        buttons:{
            "Add user":function() {
                // some action
            }
        },
        open:function(e, ui) {
            $(this).load("/add.xhtml");
        }
    },
    view:{
        buttons:{
            "View user":function() {
                // some action
            }
        },
        open:function(e, ui) {
            $(this).load("/view.xhtml");
        }
    }
};


$(".action").click(
    function(e) {
        e.preventDefault();

        $("#container").dialog(settings[$(this).attr("id")].dialog());
    }
);
4

2 に答える 2

2

物事には少し違ったアプローチをする必要があると思います。ダイアログは、追加/表示オプションで初期化されます。そのため、JavaScript は最初のダイアログで解析および初期化され、インスタンスが既に存在するため、2 番目のダイアログは無視されます。

ダイアログを別の場所で初期化し、代わりに html をコンテナーにロードしてから、ダイアログを開くようにトリガーします。

var dialog = {    
    add: $("#container").load("/add.xhtml"),    
    view: $("#container").load("/view.xhtml")
};

.dialog("open") の後にコンテナーを追加するか、次のようにマークアップを再構築して読みやすくします。

$("#container").load("/" + $(this).attr("id") + ".xhtml").dialog("open");
于 2009-10-06T14:41:43.753 に答える
0

に従って各ダイアログにクローズイベントを挿入すると

close:function(e, ui) {
    $(this).dialog("destroy");
}

それはうまくいきます!

于 2009-10-06T17:40:18.147 に答える