Javascript FancyBox 2防止起泡
在FancyBox2中,我希望防止元素内部的元素冒泡。Javascript FancyBox 2防止起泡,javascript,jquery,fancybox-2,event-bubbling,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="con
两个元件上都附有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>
JS:
以下是一个例子:
编辑1
通过加载内容并单击来修复它 编辑2
Edit 1是一个解决方案,但它不起作用,因为内容(DOM元素)被复制而未移动。FancyBox 1复制并粘贴DOM元素
FancyBox 2将其移动并放回(剪切/粘贴)。
我现在所做的是创建了一个新的div,然后单击该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();
});
//结果杯
jQuery('.bikerlink')。单击(函数(事件)
{
//停止默认+事件冒泡
event.preventDefault();
event.stopPropagation();
//设置CSS类+DataFancyBoxHref
var fancyBoxRemoveCssClass=“需要在FANCYBOX关闭后隐藏此文件”;
var dataFancyBoxHref=jQuery(this).attr(“data fancybox href”);
//脏修复:添加div以单击烧杯链接
//原因:无法防止烧杯冒泡事件
jQuery(“.kalender_概述”).append(“FANCYBOX关闭后删除”);
//Init FancyBox
jQuery(“.”+FancyboxRemovecsClass).fancybox(
{
//关门前
beforeClose:function()
{
//删除创建的临时Div元素(脏修复)
jQuery(“.”+FancyBoxRemoveCsClass).remove();
}
});
//点击
jQuery(“.”+FancyBoxRemoveCsClass).click();
});
这很难!这可能会对你的链接有帮助:就像这个:Thanx一样,但我不能使用它,因为你需要双击。1用于单击并初始化fancybox,然后再次单击以加载click+fancybox=fancybox可见。不过,我已经做了不同的修改。
jQuery(".outside").fancybox({
beforeLoad: function () {
alert("outside");
}
});
jQuery(".inside").fancybox({
beforeLoad: function () {
alert("inside");
}
});
//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();
});