2012-03-11 98 views
0

我想通過live()方法將函數與函數綁定。 該功能僅在第一次使用時表現良好。 我認爲我必須從任何事件中解開這個元素並反彈相同的功能,但我不知道該怎麼做!回彈相同功能

下面是代碼:

var temp = function() { 
    var htmlEx = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; 

    $('#template_loading').fadeIn(); 
    $('#template_loading').queue(function() { 
     $('#tp_prev').html(htmlEx); 
     $('#template_container').removeClass("cur_temp"); 
     $('#template_container').addClass("cur_prev"); 
     $('#template_container').animate({"margin-left" : "0"}, 400, 'easeOutExpo');  
     $('#template_container').queue(function() { 
      $('#template_loading').fadeOut();    
      $('#tp_cur').empty();    
      $('#template_container').removeClass("cur_prev"); 
      $('#template_container').addClass("cur_temp"); 
      $('#tp_prev').empty();    
      $('#tp_cur').html(htmlEx); 
      $('#tp_cur').queue(function() { 
       $('#prev.pers_arrow').die(); 
       $('#prev.pers_arrow').live("click", temp); 
       $(this).dequeue(); 
      }); 
      $(this).dequeue(); 
     }); 
     $(this).dequeue(); 
    }); 
}; 

$('#prev.pers_arrow').live("click", temp); 
+0

**該代碼沒有按」沒有道理!**你刪除了事件,然後再次添加它,並且函數的回調函數將自身添加爲回調函數。 ** ha?!?!** – gdoron 2012-03-11 11:45:49

+1

不,您通常不必刪除並添加事件偵聽器來多次運行它們。你可能對函數本身有問題。如果您詳細說明實際問題,您想要實現什麼,並解釋代碼應該做什麼以及它做了什麼,我們可以幫助您更好地實現。包括http://jsfiddle.net/演示會更好。 – 2012-03-11 11:47:20

回答

1

第一:永遠,永遠,永遠做這樣的。

你必須緩存你的數據,不要一直跳到最高!

第二: 在我看來,現場已被棄用,你可以在和使用- 所以關閉

嘗試:

var prev=$("#prev"); 
var pers_arrow=".pers_arrow"; 
    var temp = function() { 
    var htmlEx = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; 
    var template_loading=$('#template_loading'); 

    template_loading 
     .fadeIn() 
     .queue(function() { 
      $('#tp_prev').html(htmlEx); 
      var template_container=$('#template_container'); 
      template_container 
       .removeClass("cur_temp") 
       .addClass("cur_prev") 
       .animate({"margin-left" : "0"}, 400, 'easeOutExpo') 
       .queue(function() { 
        template_loading.fadeOut();    

        template_container.removeClass("cur_prev").addClass("cur_temp"); 
        $('#tp_prev').empty();  
        //you can don't use it - because .html() method already will clean container   
        //$('#tp_cur').empty();  
        $('#tp_cur').html(htmlEx).queue(function() { 
         prev.off("click",pers_arrow,temp).on("click",pers_arrow,temp); 
         $(this).dequeue(); 
        }); 
        $(this).dequeue(); 
       }); 
      $(this).dequeue(); 
     }); 
}; 
prev.off("click",pers_arrow,temp).on("click",pers_arrow,temp) 
+0

謝謝你的回答! – kapantzak 2012-03-15 09:22:47