JS文件
电脑
代码编写器
示例下载:http://pan.baidu.com/s/1gdvKdFl
jQuery之所以会产生上面所提到的闪烁问题,其根本原因就在于事件被绑定到了同一个元素上面,这样鼠标在经过的时候鼠标焦点在不断的变化,浏览器无法准确具体的判断鼠标所处的位置,从而导致了闪烁问题。
下面两张图片是我做的示例图片,前面的是JS效果代码,后面的是HTML代码。需要说明的是一共用到了四种显示隐藏show/hide函数(传参和不传参),fadeIn/fadeOut(传参和不传参),fadeTo同理就不在赘述。大家可到我提供的地址下载示例。
因为事件绑定到了同一元素上才会致使闪烁的情况出现,所以只要我们将事件绑定在不同的元素上即可解决。但要注意的是,绑定到不同的元素上应确保元素是块级元素或具有块级元素的属性。先看HTML代码,我做了8个div分成两行进行效果对比。在div里面每个都包含一个隐藏的样式为hide的div(即我说的提示框),并分别给了ID。上面四个采用绑定时间到同一元素;下面四个则绑定到两个元素;
接下来看JS代码,分别和下面的对应。很明显的看到$('#6')、$('#7')、$('#8')将事件分开了进行绑定,mouseover绑定到本身,mouseout则绑定到了子元素。
运行之后,可以发现第6、7、8个div当鼠标经过然后移动到提示框上面没有出现闪烁的情况了。
说明:我做的是简单地展示。可以发下在此情况下678三个div鼠标只有从提示框中移开提示框才会消失。这就是分别绑定事件不足的一个地方。如果你想要实现当鼠标一出第678个div提示框也会隐藏的效果,你可以在div里面在嵌套一个div,然后将mouseout事件绑定到新嵌套的div上面即可解决。
本经验属个人发现,个人原创,仅为学习之用,谢绝任何形式的转载与传播。