0

メニューがあり、メニュー内の各リンクがモーダル ダイアログで開かれます。リンクを複数回クリックするたびに同じダイアログが作成されないようにしています。

チェックしてみた

if(outputHolder.hasClass('ui-dialog-content:visible')){return false;} 
 $("body").append(outputHolder);
 outputHolder.load($this.attr("href"), null, function() {      
 outputHolder.dialog(

それ以外の場合は、ダイアログが表示されます..

助言がありますか??

完全なコード

http://jsfiddle.net/6qgTr/5/

4

2 に答える 2

1

ダイアログが最初に表示されたときにのみ ajax 呼び出しが行われるようにしたいのですが、その後のクリックでは、ajax 呼び出しが再作成されることなくダイアログが再表示されますか?

その場合は、ダイアログが閉じられたときにダイアログの要素が削除されるため、次のコードを最初に削除する必要があると思います。それがなければ要素は残りますが、隠されます。

close: function(event, ui) { $(this).remove(); }

また、ダイアログの div 要素を追跡して再利用できるようにする必要があります。.data()これにはメソッドを使用できます。

function openDialog($dialogDiv) {
    $dialogDiv.dialog({
        // options, but not including 'close'
   });
}

function loadEmployeesShow(link) {
    var $link = $(link),
        $dialogDiv = $link.data('dialogDiv');
    if (!$dialogDiv) {
        console.log('creating new dialog');
        $dialogDiv = $('<div>');
        $link.data('dialogDiv', $dialogDiv);
        $dialogDiv.load($link.attr('href'), function() { openDialog($dialogDiv); });    
    } else {
        console.log('reusing existing dialog');
        openDialog($dialogDiv);
    }
};

jsfiddle

于 2013-04-11T01:41:35.113 に答える
0

その場で作成するのではなく、ダイアログの基礎として使用される div を html コードに作成することから始める必要があります。その後、毎回新しいダイアログを作成する代わりに、この同じダイアログを開いたり閉じたりできます。

また、すべての JavaScript コードを HTML から分離してください。

ダイアログ設定では、最初のオプションはbgiframe: true、これはダイアログの有効なオプションではありません。

ダイアログにデータをロードできないhttps://www.google.com.ar

jQuery ajaxページの引用

ブラウザーのセキュリティ制限により、ほとんどの "Ajax" 要求は同一オリジン ポリシーの対象となります。要求は、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。

必要な取得を実行する独自のサーバー上のスクリプトを指定する必要があります。

私はあなたが欲しいと思うもので新しいフィドルを作成しました。

于 2013-04-10T23:16:36.850 に答える