FancyBox 2防止冒泡

时间:2013-03-14 16:14:26

标签: javascript jquery fancybox-2 event-bubbling

在FancyBox2中,我想防止元素内部冒泡 在这两个元素上都附有fancybox 但是如果你单击内部元素,外部元素也会被触发 我怎样才能阻止事件冒泡?

HTML:

<div class="outside" data-fancybox-href="#content">OUT
    <div class="inside" data-fancybox-href="#content">IN</div>
</div>
<div id="content">content</div>

CSS:

.outside {
    background :yellow;
    height:100px;
    width:100px;
}
.inside {
    background : orange;
    height:50px;
    margin:0 25px;
    width:50px;
}

#content
{
    display:none;
}

JS:

jQuery(".outside").fancybox({
    beforeLoad: function () {
        alert("outside");
    }
});

jQuery(".inside").fancybox({
    beforeLoad: function () {
        alert("inside");
    }
});

以下是一个示例:http://jsfiddle.net/zrH6g/

编辑1
通过加载内容和点击来修复它 http://jsfiddle.net/483uM/2/

编辑2
编辑1是一个解决方案,但它没有工作,因为内容(DOM元素)被复制而不是移动。 FancyBox 1复制并粘贴DOM Elements。
FancyBox 2移动它并将其放回(剪切/粘贴)。

我现在所做的是创建了一个新的div并单击它并在fancybox关闭时将其删除。

//Results Cup
    jQuery('.beakerLink').click(function(event)
    {
        //Stop Default + Event Bubbling
        event.preventDefault();
        event.stopPropagation();

        //Set CSS Class + DataFancyBoxHref
        var fancyBoxRemoveCssClass = "NEED_TO_HIDE_THIS_AFTER_FANCYBOX_CLOSE";
        var dataFancyBoxHref = jQuery(this).attr("data-fancybox-href");

        //Dirty FIX : Add div to click for beaker link
        //Reason : Can't prevent event bubbling of beaker
        jQuery(".kalender_overview").append("<div class='" + fancyBoxRemoveCssClass + "' data-fancybox-href='" + dataFancyBoxHref + "'>REMOVE AFTER FANCYBOX CLOSES</div>");

        //Init FancyBox
        jQuery("." + fancyBoxRemoveCssClass).fancybox(
        {
            //Before Closing
            beforeClose: function()
            {
                //Remove Created Temp Div Element (Dirty FIX)
                jQuery("." + fancyBoxRemoveCssClass).remove();
            }
        });

        //Click
        jQuery("." + fancyBoxRemoveCssClass).click();
    });

0 个答案:

没有答案