【发布时间】:2012-09-12 08:12:41
【问题描述】:
我试图通过单击与fancybox 画廊无关的元素来打开fancybox 图片库(带有缩略图),所以我想使用triger 方法。
问题是,如果照片数量较多(例如 8 个画廊,每个 gal 有 10 张照片),则会导致堆栈溢出。我在这里找到的答案很少,例如使用 live()、bind()、stopPropagation()、stopImmediatePropagation() 等,但似乎没有什么对我有用。
HTML 是这样的:
<div id="thumb_1" class="fancy-thumb">
<a class="fancybox-thumb" id="gal-1 rel="gal-1"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-1"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-1"><img src="./foo/bar.baz"/></a>
.........
<a class="fancybox-thumb" rel="gal-1"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-1"><img src="./foo/bar.baz"/></a>
<another html elements absolute positioned such as labels etc>
</div>
.........
<div id="thumb_10" class="fancy-thumb">
<a class="fancybox-thumb" id="gal-10 rel="gal-10"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-10"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-10"><img src="./foo/bar.baz"/></a>
.........
<a class="fancybox-thumb" rel="gal-10"><img src="./foo/bar.baz"/></a>
<a class="fancybox-thumb" rel="gal-10"><img src="./foo/bar.baz"/></a>
<another html elements absolute positioned such as labels etc>
</div>
而 JS 看起来是这样的:
// fancybox is initialized in after document ready
$(".fancybox-thumb").fancybox();
// this function should trigger fancybox
this.openGal(e){
var gal_id = $(e.currentTarget).attr("id");
$("#" + gal_id).trigger("click");
return false;
// note that here I've tried almost everything found at stackoverflow
// but nothing seems to work
}
// listeren looks like this
$(".fancy-thumb").click(function(e) {scope.openGal(e);});
请不要发布应该以标准方式发布的此类答案,并且使用 trigger() 不是一个好主意。我需要使用 trigger()。
【问题讨论】:
-
jsfiddle.net/r9SEs 是我做的一个小提琴,请编辑它更正确,我添加了一些虚拟警报来帮助,我还发现一些 id 标签引号没有关闭。
-
感谢您的回复,但我只能看到第一个警报,即点击后立即触发的警报,而不是第二个警报,在 openGal 函数中
-
所以我编辑了小提琴,触发器调用 fancythumbs click 函数导致无限循环,我猜这就是你的代码中发生的事情。我将为此添加答案并尝试找到解决方案。您能否发布更多代码/相关性来说明您为什么这样做?
-
只是为了记录:容器
div不应该有类fancy-thumb,只是它里面的锚,否则fancybox将尝试使用div的内容作为启动以及单击的锚点的目标(解决方案可能更简单)
标签: jquery triggers fancybox stack-overflow