关于jquery事件中被我忽视的一些用法

一、某些动画效果中,避免持续反应用户的连续点击(这标题真不好描述)2014-01-16

  意思就是指用户点击速度很快,完成一次效果的时间不能很快结束的话,就会出现用户不点击了,效果还在持续。看下面例子就明白了,手风琴效果,短时间内多次点击的话,你就会发现问题了。(其实算是转载,在别人博客看到了,忘记是哪了)

点此查看不好的效果

 例子中的代码

HTML:

关于jquery事件中被我忽视的一些用法
<div class="wrap">
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
    <p>click me</p>
    <div class=‘content‘></div>
</div>
View Code

 CSS:

关于jquery事件中被我忽视的一些用法
        .wrap{
            width: 40%;
            margin:0 auto;            
        }
        .content{
            height: 200px;
            background: #94D0D1;
            display: none;
            overflow: hidden;
        }
        p{
            height: 30px;
            line-height:30px;
            background: #62f1f4;
            cursor: pointer;
            border-bottom: 1px solid #eee;
            color: #777;
            font-size: 1.3em;
            margin: 0;
            padding: 0;
        }
        .dis{
            display: block;
        }
View Code
    $("p").mousedown(function(){        
            $(this).next("div").slideToggle();        
            $(this).next("div").siblings("div").slideUp();
    });

  解决办法:jquery中的:animated可匹配所有正在执行动画效果的元素,所有可以用.is(":animated")或.not(":animated")(此not用法错误,jquery中并没有)进行判断后再执行效果或直接只对非动画进行中的元素执行动画效果,如$("div:not(:animated)").animate({ left: "+=20" }, 1000);,当然也可以用于jquery其他定义好了的动画效果。 

点此查看改善后的效果  

  $("p").mousedown(function(){
         $(this).next("div:not(:animated)").slideToggle();
     $(this).next("div:not(:animated)").siblings("div").slideUp();
    });

关于jquery事件中被我忽视的一些用法

上一篇:.NET DataGrid 导出Excel 无分页


下一篇:关于小改CF协同过滤至MapReducer上的一些心得