回弹功能相同

时间:2012-03-11 11:42:15

标签: jquery live die

我想通过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); 

1 个答案:

答案 0 :(得分:1)

第一个:永远,永远,不管怎么样。

你必须缓存你的数据,不要一直跳进dom !!!

<强>第二 在我看来,现场已被弃用 - 您可以使用 关闭

试试:

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)