jQuery lightBox插件的bug解决

时间: 2010-5-09 - 分类: JavaScript - 评论: 0 - 阅读: 336 次

lightBox效果在刚出现的时候引发了一个热潮,但是最开始是基于prototype的,咱一向都用jquery,就用不上了,都用thickbox。后来出了jquery版本的lightbox插件,效果不错,就在项目中用上了。可以点此查看效果:http://www.hxfang.com/action-model-name-newhouse-itemid-13.html

但是在实际使用过程中,发现这个插件还是有些小bug要解决。第一个,IE6,7下会出现影响图片查看的虚线框。

不知道为何,这个bug比较难以重现,lightbox已经通过在css中设定:#lightbox-nav a { outline: none;}来当前激活的链接的虚线边缘,但是在某些情况下还是会出现。最后没办法,自己hack一下。其实去掉虚线框的js代码也很简单,就是让当前元素失去焦点,调用元素的blur事件即可。在lightbox的js代码的280行与300行左右,在其调用点击事件的地方,加入去掉焦点的方法

settings.activeImage = settings.activeImage - 1;
 _set_image_to_view();
 $(this)[0].blur();//让当前元素在点击后失去焦点
 return false;

第二个,第一个与最后一个元素的事件处理不当,会触发一些js错误,有些情况下会导致lightbox的半透明边不会消失一直浮动在上层。

激活firebug,到官方的example下面点击它的范例,在最后一个元素再点击下一个的话,就会触发一个js错误:settings.imageArray[settings.activeImage] is undefined。这个js错误有些情况下会导致那个浮动的半透明背景层不会消失,这应该是作者的一个疏忽吧,对于第一个元素跟最后一个元素的触发事件没有更改,导致数组下标越界。修正这个错误也不难,修改第一个与最后一个元素触发事件,改为关闭lightbox。

$('#lightbox-nav-btnNext').unbind()
					.bind('click',function() {
						_finish();
						return false;
					});
http://leandrovieira.com/projects/jquery/lightbox/#

发表评论