Crypted_39
Crypted_39

Reputation: 125

Parallax scroll with the newest jQuery isn't working

I used a jQuery script for a parallax effect. The script works fine with older versions of jQuery (till version 1.11.3) but when I replaced it with the newest version the smooth scrolling effect didn't work. Does anyone now what part of the code isn't anymore supported?

$(document).ready(function() { 
  $('a[href*=#]').each(function() {  
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')   && location.hostname == this.hostname   && this.hash.replace(/#/, '')) {   
      var $targetId = $(this.hash),
        $targetAnchor = $('[name=' + this.hash.slice(1) + ']');   
      var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;    
      if ($target) {     
        var targetOffset = $target.offset().top;

             
        $(this).click(function() {
          $("#nav li a").removeClass("active");
          $(this).addClass("active");      
          $('html, body').animate({
            scrollTop: targetOffset
          }, 1000);      
          return false;     
        });   
      }  
    } 
  });
});

Upvotes: 1

Views: 37

Answers (1)

tao
tao

Reputation: 90038

It's the selector.

Replace $('a[href*=#]') with $('a[href*="#"]').

It was never a valid selector to begin with.
When they fixed it, all scripts using the flawed (but working up to then) syntax broke.

Caused quite a bit of unrest at the time, especially since a lot of "pro" WordPress themes were using it and broke over night. It was fun to watch people's reaction when they realized the product they bought was failing at what they considered to be basic functionality.

See this issue: https://github.com/jquery/jquery/issues/2824

Upvotes: 1

Related Questions