Uncaught TypeError: undefined is not a function

Тема в разделе "JavaScript", создана пользователем SPoX, 6 сен 2014.

Модераторы: ZiX
  1. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    172
    Симпатии:
    24
    привет всем
    если тему открил не на правилном месте простите меня

    в етом коде помогите мне изменить функцию .live на .on
    чтобы работало на еовые версии jQuery (1.10 & 1.11)
    Код:
    var hidecomm = [], rateval = 0, oleft = 0, otop = 0;
    
    (function($){
        $.fn.livedrag = function(opts){
            this.live("mouseenter",function(){
                if(!$(this).data("init"))$(this).data("init", true).draggable(opts);
            });
            return false;
        };
    }(jQuery));
    $(function(){
        $(".orating_res").each(function(){
            rateval = parseInt($(this).html());
            if(rateval>39) $(this).parent().addClass("ogold");
            else if(rateval>0) $(this).parent().addClass("oplus");
            else if(rateval<-39) $(this).parent().addClass("oblack");
            else if(rateval<0) $(this).parent().addClass("ominus");
        });
        $(".ocomm_res").each(function(){
            rateval = parseInt($(this).html());
            if(rateval>0) $(this).parent().addClass("oplus");
            else if(rateval<0){
                $(this).parent().addClass("ominus");
                if(rateval<-4){
                    var id = $(this).parent().attr('id').split("-");
                    hidecomm[id[1]] = $("#comment-id-"+id[1]).html();
                    $("#comment-id-"+id[1]).html('<div class="comm_hide">Этот комментарий получил слишком много голосов против.<a href="#" onclick="showcomm('+id[1]+');return false;">показать</a></div>');
                }
            }
        });
        $(".ostats").livedrag({handle:"h4"});
        $(".ostats_area .oclose").live("click",function(){
            $(".ostats").fadeOut(400,function(){$(this).remove();});
            return false;
        });
        $("#ostats-user-ratings .oclose").live("click",function(){
            ostat_profile_clear();
            return false;
        });
        $(".orating a, .ocomm a").live({click:function(e){
            $(".ostats").remove();
            $("body").append('<div class="ostats"><div class="ostats_area"><a href="#" class="oclose" title="Закрыть"></a><h4>Статистика голосования</h4><div class="ostats_rows"></div></div></div>');
            oleft = e.pageX - parseInt($('.ostats').width()) - 35;
            otop = e.pageY-15;
            $(".ostats").css({top:otop,left:oleft});
        }});
        $(".orating_profile").live({click:function(){
            $("#ostats-userinfo").remove();
            ostat_profile_clear();
            var href = $(this).attr('href');
            if(href=='#') return false;
            var name = $(this).html();
            $("body").addClass('oload');
            var list = $(this).parent();
            $.post(dle_root+'engine/ajax/rating_profile.php',{name:name,rating:1,skin:dle_skin},function(rateval){
                $("body").removeClass('oload');
                list.append("<div id='ostats-userinfo'><div id='okarma' class='ogray' title='Карма'>"+rateval+"</div><a href='/user/"+name+"/' target='_blank'>Профиль</a><a href='#' onclick='orating_profile_log(\""+name+"\");return false;'>Оценки</a><a href='#' class='close'>x</a></div>");
                if(rateval>39) $("#okarma").addClass("ogold");
                else if(rateval>0) $("#okarma").addClass("oplus");
                else if(rateval<-39) $("#okarma").addClass("oblack");
                else if(rateval<0) $("#okarma").addClass("ominus");
                $("#ostats-userinfo").fadeIn(500);
            });
            return false;
        }});
        $("#ostats-userinfo .close").live({click:function(){
            $("#ostats-userinfo").fadeOut(400,function(){$(this).remove()});
            ostat_profile_clear();
            return false;
        }});
    })
    
    function ostat_profile_clear(){
        $("#ostats-user-ratings").remove();
        $(".ostats").removeClass("ostats-uservotes");
        $(".ostats_area").removeClass('ostats-uservotes-area');
    }
    
    function orating_profile_log(name){
        $("#ostats-user-ratings").remove();
        $("body").addClass('oload');
        $.post(dle_root+'engine/ajax/rating_profile.php',{name:name,skin:dle_skin},function(d){
            $("body").removeClass('oload');
            var height = $(".ostats_area").height() - 4;
            var ulheight = height - $(".ostats h4").height();
            $(".ostats_area").addClass('ostats-uservotes-area');
            $(".ostats").addClass('ostats-uservotes').prepend("<div id='ostats-user-ratings' style='height:"+height+"px;'><a href='#' class='oclose' title='Закрыть'></a><h4>Последние оценки пользователя: <b>"+name+"</b></h4><ul style='height:"+ulheight+"px;'></ul></div>");
            $("#ostats-user-ratings ul").html(d);
        });
        return false;
    }
    
    function ocomrate(id,rate){
        var area = $("#ocomm-"+id);
        $("body").addClass('oload');
        $.post(dle_root+'engine/ajax/rating_comm.php',{comm_id:id,rate:rate,skin:dle_skin},function(data){
            $("body").removeClass('oload');
            if(data.msg){
                $(".ostats_area h4").html("Внимание");
                $(".ostats_rows").html('<ul><li class="onoentry">'+data.msg+'</li></ul>');
                $(".ostats").slideDown(600);
            }else{
                if(data.rating > 0){
                    data.rating = "+"+data.rating;
                    area.removeClass('ominus').addClass("oplus");
                }else if(data.rating < 0) area.removeClass('oplus').addClass("ominus");
                else area.removeClass('oplus').removeClass('ominus');
                area.find('.ocomm_res').html(data.rating);
            }
        },"json");
        area.find("a.orating_m, a.orating_p").addClass('orated').removeAttr('href').removeAttr('title').removeAttr('onclick');
        return false;
    }
    
    function ocomstat(id,p,n){
        var area = $("#ocomm-"+id);
        $("body").addClass('oload');
        $(".ostats_rows").fadeTo(300,0.01);
        $.post(dle_root+'engine/ajax/rating_comm_stats.php',{comm_id:id,p:p},function(data){
            $("body").removeClass('oload');
            $('.ostats_rows').html(data);
            if(n) $(".ostats").slideDown(600);
            else $(".ostats_rows").stop(true,true).fadeTo(400,1);
        });
        return false;
    }
    function orating(id,rate){
        var area = $("#orating-"+id);
        $("body").addClass('oload');
        $.post(dle_root+'engine/ajax/rating.php',{news_id:id,rate:rate,skin:dle_skin},function(data){
            $("body").removeClass('oload');
            if(data.msg){
                $(".ostats_area h4").html("Внимание");
                $(".ostats_rows").html('<ul><li class="onoentry">'+data.msg+'</li></ul>');
                $(".ostats").slideDown(600);
            }else{
                if(data.rating > 39){
                    data.rating = "+"+data.rating;
                    area.removeClass('ominus oplus oblack').addClass("ogold");
                }else if(data.rating > 0){
                    data.rating = "+"+data.rating;
                    area.removeClass('ominus ogold oblack').addClass("oplus");
                }else if(data.rating < -39) area.removeClass('oplus ogold ominus').addClass("oblack");
                else if(data.rating < 0) area.removeClass('oplus ogold oblack').addClass("ominus");
                else area.removeClass('oplus ominus ogold oblack');
                area.find(".orating_res").html(data.rating);
            }
        },"json");
        area.find("a.orating_m, a.orating_p").addClass('orated').removeAttr('href').removeAttr('title').removeAttr('onclick');
        return false;
    }
    
    function ostats(id,p,n){
        var area = $("#orating-"+id);
        $("body").addClass('oload');
        $(".ostats_rows").fadeTo(300,0.01);
        ostat_profile_clear();
        $.post(dle_root+'engine/ajax/rating_stats.php',{news_id:id,p:p},function(data){
            $("body").removeClass('oload');
            $('.ostats_rows').html(data);
            if(n) $(".ostats").slideDown(600);
            else $(".ostats_rows").stop(true,true).fadeTo(400,1);
        });
        return false;
    }
    function showcomm(id){
        $("#comment-id-"+id).html(hidecomm[id]);
        return false;
    }
     
    Последнее редактирование: 6 сен 2014
    Шумадан нравится это.
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    там вроде нужно так
    $(document).on(events, selector, data, handler);

    тоесть
    Код:
     $("#ostats-user-ratings .oclose").live("click",function(){
            ostat_profile_clear();
            return false;
        });
    будет
    Код:
     $(document).on("click", "#ostats-user-ratings .oclose", function(){
            ostat_profile_clear();
            return false;
        });
    а есть вообще крутая штука
    Код:
    // Borrowed from jQuery 1.8.3's source code
    jQuery.fn.extend({
      live: function( types, data, fn ) {
              if( window.console && console.warn ) {
               console.warn( "jQuery.live is deprecated. Use jQuery.on instead." );
              }
    
              jQuery( this.context ).on( types, this.selector, data, fn );
              return this;
            }
    });
    + ещё почитайте
    https://github.com/jquery/jquery-migrate/#readme
     
    SPoX нравится это.
  3. SPoX

    SPoX

    Регистр.:
    19 апр 2014
    Сообщения:
    172
    Симпатии:
    24
    Код:
    jQuery.fn.extend({
      live: function( types, data, fn ) {
              jQuery( this.context ).on( types, this.selector, data, fn );
              return this;
            }
    });
    ето помогло и JS конфликты исчезли тоже
    все работает на нових версии jQuery

    спасибо

    только виводил ощибку из за етого куска в коде
    Код:
    if( window.console && console.warn ) {
    console.warn( "jQuery.live is deprecated. Use jQuery.on instead." );
    }
    удалил из кода и все ОК
     
    Последнее редактирование модератором: 8 сен 2014
    Шумадан нравится это.
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.722
    Симпатии:
    2.097
    да, это желательно было удалить, у меня похожие конструкции крешали в ФФ
     
    SPoX нравится это.