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 覆盖-contato

第一次点击链接打开一切正常,但每次我关闭覆盖并再次点击代码是多次追加 div 到正文。

按钮代码是

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

2 回答 2

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 回答
1

您应该在点击处理程序之外初始化覆盖。每次单击时,您都在创建叠加层的新实例,而您要做的就是显示它

于 2013-01-26T00:23:20.140 回答