首页 > 软件开发 > JQUERY >

jQuery同时使用mouseover和mouseout造成闪烁

来源:互联网 2023-03-16 23:53:40 391

jQuery很好,好的我都不想说了。但是却有一个小BUG,确切的说这个BUG应该是浏览器事件冒泡所造成的——那就是对于有子元素的父亲同时使用mouseover和mouseout事件并对其进行效果处理(如fadein/out、slideDown/up...等等)。我在之前的文章中也提到过一种方法:那就是把时间绑定到不同的元素上[实际上这种方法的实用性可能不不太好,甚至无法使用]。PwD办公区 - 实用经验教程分享!

今天我就介绍一种非常可行的方法——延迟执行。PwD办公区 - 实用经验教程分享!

方法/步骤

  • 1

    还是老样子,确保你的页面内引入了jQuery。PwD办公区 - 实用经验教程分享!

    jQuery同时使用mouseover和mouseout造成闪烁PwD办公区 - 实用经验教程分享!

  • 2

    这里我就直接写代码了。PwD办公区 - 实用经验教程分享!

    省略了html结构的其他部分,这里展示的是样式和具体的要执行操作的代码。PwD办公区 - 实用经验教程分享!

    jQuery同时使用mouseover和mouseout造成闪烁PwD办公区 - 实用经验教程分享!

  • 3

    1、样式:PwD办公区 - 实用经验教程分享!

    style>PwD办公区 - 实用经验教程分享!

    .demo { margin:100px auto; width:300px; height:200px; background:#ededed; position:relative;}PwD办公区 - 实用经验教程分享!

    .children { background:#00cc99; width:200px; height:150px; position:absolute; right:0; top:0;}PwD办公区 - 实用经验教程分享!

    /style>PwD办公区 - 实用经验教程分享!

    2、HTML代码:PwD办公区 - 实用经验教程分享!

    div class="demo">PwD办公区 - 实用经验教程分享!

    div class="children">PwD办公区 - 实用经验教程分享!

    /div>PwD办公区 - 实用经验教程分享!

    /div>PwD办公区 - 实用经验教程分享!

    显示如下PwD办公区 - 实用经验教程分享!

    jQuery同时使用mouseover和mouseout造成闪烁PwD办公区 - 实用经验教程分享!

  • 4

    给.children添加一个display:none;效果如下。PwD办公区 - 实用经验教程分享!

    现在我们添加脚本:PwD办公区 - 实用经验教程分享!

    script>PwD办公区 - 实用经验教程分享!

    $(document).ready(function(){PwD办公区 - 实用经验教程分享!

    var $div = $(".demo");PwD办公区 - 实用经验教程分享!

    $div.mouseover(function(){PwD办公区 - 实用经验教程分享!

    $(this).children().slideDown()}).mouseout(function(){PwD办公区 - 实用经验教程分享!

    $(this).children().slideUp()})PwD办公区 - 实用经验教程分享!

    PwD办公区 - 实用经验教程分享!

    })PwD办公区 - 实用经验教程分享!

    PwD办公区 - 实用经验教程分享!

    /script>PwD办公区 - 实用经验教程分享!

    这段代码使我们一般情况下加的,执行后发现当鼠标放上demo上,children就会显示,但是再将鼠标移入children上,此时children就会来回的显示与隐藏。PwD办公区 - 实用经验教程分享!

    jQuery同时使用mouseover和mouseout造成闪烁PwD办公区 - 实用经验教程分享!

    jQuery同时使用mouseover和mouseout造成闪烁PwD办公区 - 实用经验教程分享!

  • 5

    现在我们就开始讲怎么解决这个问题。mouseover和mouseout实际上可以用hover代替。然后我们在对执行的动作进行延迟处理。PwD办公区 - 实用经验教程分享!

    script>PwD办公区 - 实用经验教程分享!

    $(document).ready(function(){PwD办公区 - 实用经验教程分享!

    $(".demo").hover(PwD办公区 - 实用经验教程分享!

    function(){PwD办公区 - 实用经验教程分享!

    var $div = $(".demo");PwD办公区 - 实用经验教程分享!

    t = setInterval(function(){PwD办公区 - 实用经验教程分享!

    $div.children().slideDown(300)PwD办公区 - 实用经验教程分享!

    },300);PwD办公区 - 实用经验教程分享!

    },function(){PwD办公区 - 实用经验教程分享!

    clearInterval(t);PwD办公区 - 实用经验教程分享!

    $(this).children().slideUp();PwD办公区 - 实用经验教程分享!

    })PwD办公区 - 实用经验教程分享!

    PwD办公区 - 实用经验教程分享!

    })PwD办公区 - 实用经验教程分享!

    PwD办公区 - 实用经验教程分享!

    /script>PwD办公区 - 实用经验教程分享!

    PwD办公区 - 实用经验教程分享!

    执行之后,发现不会在出现闪烁的情况了,怎么样是不是很简单:只要将划入要执行的操作延迟执行就可以了。PwD办公区 - 实用经验教程分享!

  • 6

    说明:对于show()和hide()这两个函数则不需要用延迟执行的。时间的冒泡对他们没有影响,至少在我的使用中还没发现过有影响的。PwD办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!PwD办公区 - 实用经验教程分享!


    标签: JQUERY

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码