如何取消绑定并重新绑定()点击动画?

时间:2012-07-10 03:09:30

标签: javascript jquery html

我有一个执行简单动画的递归循环。这些动画由页面加载和控制来控制。点击控件.carousel_item

为了简单起见,

LIVE SAMPLE JSFIDDLES CLICK HERE 被剥离了

问题:当重复点击同一个控件时,动画会一遍又一遍地触发。我希望动画每carousel_item只触发一次。

更新我希望每carousel_item只动画一次动画。并在点击以下carousel_item时重置。

示例:反复按1将反复触发动画。我想第一次按下来触发动画一次。下一个用户捣碎2这将重新触发动画一次而不是重复。用户仍然可以再次按1进行糖化,这是我想要阻止的全部

从逻辑上讲,我看到点击解除绑定本身并在点击另一个.carousel_item时重新绑定,这是我的逻辑;但是,我确信有更好的解决方案

var carItems = $('.carousel_item');
var sideitems = $('.side_item');
var x = false;
$(sideitems).hide();
fadeItem();

$(carItems).on({
    click: function () {

        $(sideitems).stop(true, true).animate({
            right: '4.5em'
        });
        $(sideitems).hide();

        fadeItem();

    },
    mouseenter: function () {

    },
    mouseleave: function () {

    }
});


function fadeItem() {
    $('.side_ul li:hidden:first').fadeIn(fadeItem).animate({
        right: '-4.5em'
    }, 150, function () {});;
}​

HTML

<div id="carousel" class="flexslider">
      <ul class="slides">
        <li class="carousel_item"> <img src="asset/img/1600/slide1_1600.jpg" /> </li>
        <li class="carousel_item"> <img src="asset/img/1600/slide2_1600.jpg" /> </li>
        <li class="carousel_item"> <img src="asset/img/1600/slide1_1600.jpg" /> </li>
        <li class="carousel_item"> <img src="asset/img/1600/slide2_1600.jpg" /> </li>
        <!-- items mirrored twice, total of 12 -->
      </ul>
    </div>

      <nav class="side_nav">
    <ul class="side_ul">
        <li class="side_item home"><div class="text_links"><a href="#">home</a></div></li>
        <li class="side_item document"><div class="text_links"><a href="#">docs</a></div></li>
        <li class="side_item video"><div class="text_links"><a href="#">video</a></div></li>        
        <li class="side_item programming"><div class="text_links"><a href="#">web</a></div></li>

    </ul>
  </nav>

enter image description here LIVE SAMPLE JSFIDDLES CLICK HERE

1 个答案:

答案 0 :(得分:3)

工作演示 http://jsfiddle.net/ScbDG/2/

您可以在点击事件后使用.off; http://api.jquery.com/off/&amp; $(this)将确保为该特定对象设置为off

好读:Best way to remove an event handler in jQuery?

希望这有帮助,:)

<强>码

$(carItems).on({
     click: function () {

         $(sideitems).stop(true, true).animate({
             right: '4.5em'
         });
         $(sideitems).hide();

         fadeItem();
         $(this).off('click');

     },
     mouseenter: function () {

     },
     mouseleave: function () {

     }



 });