0

だから...私はここにサイトを持っています...

jQuery ダイアログは ajax リクエストをhereに送信しています。

ページに到着すると、自動ポップアップがあります。それを却下してください。

この画像をクリックすると・・・
ここに画像の説明を入力

この関数呼び出しに関連付けられている...

$(function() {
    $("#compliance").dialog({
        autoOpen: true,
        modal: true,
        width: 750,
        height: 'auto',
        show: 'fade',
        hide: 'fade',
        position: {my: "center top", at:"center top", of: window },
        buttons: {
            "Dismiss": function() {
                $(this).dialog("close");
            }
        }
    });
    $(".dialogify").on("click", function(e) {
        e.preventDefault();
        $("#compliance").html("");
        $("#compliance").dialog("option", "title", "Loading...").dialog("open");
        $("#compliance").load(this.href, function() {
            $(this).dialog("option", "title", $(this).find("h1").text());
            $(this).find("h1").remove();
    });
    });
});

それともこれ...
ここに画像の説明を入力

この機能に関連付けられている...

$(function() {
    $("#switch").dialog({
        autoOpen: false,
        modal: true,
        width: 750,
        height: 'auto',
        show: 'fade',
        hide: 'fade',
        position: {my: "center top", at:"center top", of: window },
        buttons: {
            "Dismiss": function() {
                $(this).dialog("close");
            }
        }
    });
    $(".dialogify").on("click", function(e) {
        e.preventDefault();
        $("#switch").html("");
        $("#switch").dialog("option", "title", "Loading...").dialog("open");
        $("#switch").load(this.href, function() {
            $(this).dialog("option", "title", $(this).find("h1").text());
            $(this).find("h1").remove();
    });
    });
});

...モーダルが出てきます。しかし、2つのモーダルが出てくるようです。不透明な背景が必要以上に暗くなっています。そして、最初のものを閉じると、背景が明るくなるにつれて、別のものがあります。

どうしてこれなの?それぞれに関数呼び出しが 1 つしかありません。

4

1 に答える 1

2

ダイアログを表示する2 つのイベント ハンドラーがあり、どちらも同じアクション (任意の をクリック) によってトリガーされます.dialogify。したがって、両方のハンドラーが両方の .dialogify要素のクリックを処理しようとしています。this.hrefいずれかをクリックすると、両方のダイアログが表示されます (ただし、各クリック ターゲットに固有であるため、同じコンテンツが読み込まれます)。これを確認するにはalert("a")、最初のハンドラーとalert("b")2 番目のハンドラーの両方に を配置します。

この代わりに、各イベントのクリック ターゲットを一意に識別するセレクターを使用するだけで問題は解決します。

于 2013-09-19T21:05:23.730 に答える