0

こんにちは、オーバーレイで外部リンクを開くコードがあります

    $('body').append('<div class="overlay-2"><div class="contentWrap"></div>  </div>');
    $("a.overlay-2[rel]").live('click', function () {
    $("a.overlay-2[rel]").overlay({
        mask: '#333',
        onBeforeLoad: function() {
            var wrap = this.getOverlay().find(".contentWrap");
            wrap.load(this.getTrigger().attr("href"));
        }
    }).load();

    $(this).overlay().load();       
    return false;
}); 

これにより、div overlay-contato が追加されます

リンクを最初にクリックすると、すべてが正常に開きますが、オーバーレイを閉じてもう一度クリックするたびに、コードは div を body に複数回追加します。

ボタンコードは

    <a href="/php/my-page.php"  class="overlay-2" rel=".overlay-contato">click </a>
4

2 に答える 2

1

クリックハンドラの外側でオーバーレイを初期化する必要があります。クリックするたびに、オーバーレイの新しいインスタンスを作成します。必要なのは、オーバーレイを表示することだけです。

于 2013-01-26T00:23:20.140 に答える
1

追加する可能性のある div が最初に存在するかどうかを確認するだけです。

// note i added an id to the overlay to simplify and improve selector performance
var overlay = $('#overlay');

if(overlay.length < 1) {
  overlay = $('<div id="overlay" class="overlay-2"><div class="contentWrap"></div></div>').appendTo('body');
}

// now you can also use overlay as a variable instead of querying it from the DOM
于 2013-01-26T00:18:10.513 に答える