2011-10-13 71 views
2

我有一個div的jquery動畫片替換對方,它工作得很好,但是當點擊黑色塊(mydiv1)時,它不會返回到原來的位置?5個div替換對方onclick

檢查此鏈接jquery_animation_divs

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('.nn').click(function(){ 
      var l = $(this).css('left'); 

      $(this).animate({ 
       left: '-=' + l 
      }, 1500, "easeOutBounce", function(){ 
       // callBack 
       $("#divmain").css("background-color", $(this).css("background-color")); 
      }); 

      $('.ff').animate({ 
       left: '+=' + l 
      }, 1500, "easeOutBounce", function() { 
       // callBack 
      }); 

      var ff = $('.ff'); 
      ff.removeClass('ff').addClass('nn'); 

      $(this).removeClass('nn').addClass('ff'); 
     }); 
    }); 
</script> 

回答

0

您正在使用.bind()(通過.click()),它只適用於在您運行事件綁定代碼時與選擇器匹配的元素。您希望使用.delegate().live(),以便黑色塊將包含在匹配元素集中。

這裏是你的確切代碼.click(一個通過的jsfiddle取代.live('click',http://jsfiddle.net/Uv2GE/

+0

雖然這解決了這個問題,但這不是'.live'的正確用法。 Live用於在事件聲明時爲DOM中不存在的元素綁定事件。 –

+0

非常感謝,我還想阻止用戶在動畫過程中點擊框?最好的祝福 –

0

當文檔加載時,黑方擁有一流的「FF」,而不是「NN」,所以click處理程序永遠不會適用於它。

更換

 $('.nn').click(function() { 

 $('.nn').live("click",function() { 

,它會正常工作。

+0

@KassemShehady你沒有說,在你原來的問題。基於這一點,現在隱瞞答案並不公平。 – Blazemonger

0

看起來您從未將點擊事件添加到myDiv1。當你第一次加載頁面功能$(document).ready(function()是設置所有.nn類點擊功能,但當你改變.ff.nn類它沒有一個點擊功能。