在html锚点中返回false并不返回false

时间:2011-11-08 14:42:37

标签: javascript-events prototypejs lightbox2

我正在尝试修复我的灯箱javascript中的小错误,同时尽可能保持编辑不引人注目。

示例页面: http://www.mattressonline.co.uk/Product/Silentnight-Miracoil-3-Gold-Label-Limited-Edition-Mattress-P43

问题在于主要产品形象。如果单击两个缩略图中的任何一个,图像将按预期加载到灯箱内。单击大图像会触发一个点击图库图像的事件,您可以看到灯箱开始弹出,但随后是< a>的默认事件。标记触发,图像在单独的窗口中加载。这个不应该发生,因为链接使用return false;

<a id="gallery-link" class="main" href="#" onclick="click($('gallery-image-0')); return false;" title="Gold Label Mattress">
    <img id="gallery-image" src="/content/products/280x175/silentnight-ariel-miracoil-gold-label-limited-edition.jpg" alt="Gold Label Mattress">
</a>

除此之外,它只是一个标准的原型/ scriptaculous / lightbox2设置。

任何想法为什么返回false都不会返回false?令人难以置信的是令人沮丧。

编辑:IE6和8 DO按照说明返回false。目前的FF,Chrome和IE9都没有。

2 个答案:

答案 0 :(得分:1)

不显眼的脚本通常意味着不使用内联属性。当前的最佳实践是在将元素添加到DOM后附加侦听器:

$('gallery-link').observe('click', function(event) {
    click($('gallery-image-0'));
    event.stop();
});

答案 1 :(得分:1)

您尝试在另一个事件被触发后返回false,该事件具有自己的一组操作。因此,您打算拨打return false,但在此之前,gallery-image-0会响应您的click()来电,这可能已导致浏览器打开另一个页面。

这有意义吗?因此,您需要观察目标元素上的click,并确保其以return falseevent.stop()结尾。