2016-05-06 5 views
0

Ich habe mehr jQuery Leiden, in dem meine Scroll nach oben Skript funktioniert nicht.Warum verursacht dieses Skript "nach oben scrollen" einen Typfehler? jQuery Konflikt

Ich habe zahlreiche Skripte versucht, aber jedes Mal, wenn ich den Fehler:

TypeError: undefined is not an object (evaluating '$target.offset().top')

jQuery(document).ready(function($){ 
    $(window).scroll(function(){ 
     if ($(this).scrollTop() > 100) { 
      $('.scrollup').fadeIn(); 
     } else { 
      $('.scrollup').fadeOut(); 
     } 
    }); 
    $('.scrollup').click(function(){ 
     $("html, body").animate({ scrollTop: 0 }, 600); 
     return false; 
    }); 
}); 

Dies auf einer Wordpress-Website verwendet wird, und Wordpress Lasten jQuery in keinem Konflikt-Modus.

jQuery ist wirklich der Fluch meines Lebens im Moment. Vielen Dank.

EDIT:

Es sieht aus wie es mit diesem in Konflikt, die auch auf der gleichen Seite. Ich muss beide Seite an Seite arbeiten.

var $ = jQuery.noConflict(); 

$(document).ready(function(){ 
    $('a[href^="#"]').on('click',function (e) { 
     e.preventDefault(); 

     var target = this.hash; 
     var $target = $(target); 

     $('html, body').stop().animate({ 
      'scrollTop': $target.offset().top - 50 
     }, 900, 'swing', function() { 
      window.location.hash = target; 
     }); 
    }); 
}); 
+2

Da sich das Ereignis auf '$ (window)' befindet, ist 'this' das Fenster, also versucht' $ (this) .scrollTop() 'die Scroll-Position des Fensters zu bekommen, was falsch ist ... –

+0

Ah. Ich habe auch 'jQuery (Dokument) .ready (Funktion ($) { \t $ ('a [href^=" # "]'). On ('klicken', Funktion (e) { \t e.preventDefault (); \t var target = this.hash; \t var $ target = $ (Ziel); \t $ ('html, body') stop() animieren ({ \t 'scrollTop':. $ target. .Offset() top } \t, 900, 'Swing', function() { \t window.location.hash = Ziel;. \t}); \t}); }); 'auf der gleichen Seite. –

Antwort

0

Entschuldigung, ich kann nicht kommentieren also hier Posten. Ich kopiere/Ihren Code eingefügt, es funktioniert auf jsfiddle: https://jsfiddle.net/ahy1mauc/

$(window).scroll(function(){ 
    if ($(this).scrollTop() > 100) { 
     $('.scrollup').fadeIn(); 
    } else { 
     $('.scrollup').fadeOut(); 
    } 
}); 

Mit JQuery 1.12: (noch $ (Fenster) verwendet wird).

+0

Ich habe auch 'jQuery (document) .ready (function ($) {$ ('a [href^=" # "]') on ('click', Funktion (e) {e.preventDefault(); var target = this.hash; var $ ziel = $ (target); $ ('html, body'). stop(). animate ({'scrollTop': $ ziel.offset(). top}, 900, 'swing' , function() {window.location.hash = target;});});}); 'auch auf der Seite. Ich denke, die beiden sind widersprüchlich, aber ich bin nicht sicher, wie ich es lösen soll. –

+0

Versuchen Sie, dieser Anleitung zu folgen: [link] (https://api.jquery.com/jquery.noconflict/). Wenn Sie die $ from jquery freigeben möchten, warum legen Sie den neuen Alias ​​als $? 'var $ = jQuery.noConflict();'. Was Sie versuchen könnten, ist dies: 'jQuery.noConflict(); jQuery (Dokument) .ready (function ($) {})'. Versuche dies. – Gonnarule

0

Ihr jQuery Kompatibilitätsproblem. Verwenden Sie in Ihrem Skript "jQuery" anstelle von "$", wo immer Sie es verwenden.

+0

Sollte 'jQuery (document) .ready (function ($) {' nimm das nicht? –

Verwandte Themen