【jQuery】not()で特定要素を除く方法

別の人が作ったサイトを修正中、タブに<a href=”#●●”>で特定要素に飛ばすように設定したのに、なぜか動きが変…?リンクしている要素よりも上に飛ぶ…?

jsファイルの中を見ると、ありました、”ページ内リンクを指定位置にスクロールで動かす”ためのコードが。これがターゲットよりも上に飛ばしていたんですね。そのコードはこちら。

$(function(){
   $('a[href^=#]').click(function() {
      var speed = 400; 
      var href= $(this).attr("href");
      var target = $(href == "#" || href == "" ? 'html' : href);
      var position = target.offset().top-220;
      $('body,html').animate({scrollTop:position}, speed, 'swing');
      return false;
   });
});

ここに”タブから飛ぶページ内リンクは除外する”条件を加えたのがこちら。

$(function(){
   $('a[href^=#]:not(.tab li a)').click(function() {
      var speed = 400; 
      var href= $(this).attr("href");
      var target = $(href == "#" || href == "" ? 'html' : href);
      var position = target.offset().top-220;
      $('body,html').animate({scrollTop:position}, speed, 'swing');
      return false;
   });
});

:not(除外したい要素) を書き加えました。

これでタブは正常に動作しました。

jQuery
スポンサーリンク
Web Parts Box
タイトルとURLをコピーしました