2012-03-11 14 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

**このコードは、」doesnの**イベントを削除してからもう一度追加すると、その関数のコールバックがコールバックとして追加されます。 ** ha?!?! – gdoron

+1

通常、イベントリスナーを複数回実行して削除する必要はありません。関数自体に問題があるかもしれません。あなたが実際の問題について精緻化し、達成しようとしていること、そしてこのコードが何をすべきか、そしてそれが何をするのかを説明すれば、私たちはあなたをより良く助けることができます。 http://jsfiddle.net/のデモを含めればさらに良いでしょう。 –

答えて

1

最初:NEVER、EVER、EVERそのように行う。ここ

は、コードがあります。

データをキャッシュして、すべての時間をdomにジャンプしないでください!

秒:あなたはそれを試してみてください

オフ上を使用することができます-SO私の意見のライブで が廃止されました:

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

関連する問題