0

ページ内のスクロールにこのコードを使用しています。内部リンクを基本的にチェックし、間隔がある場合はスムーズなスクロールを追加します。

<script>
$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {

      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
</script>

ただし、同じページにスライドショーもあります。これはBootstrap の Carousel を使用します。このコードはスライドショーと競合するため、この のスムーズ スクロールを無効にしたいと考えていhrefます。

この衝突を防ぐコードを追加するにはどうすればよいですか?

4

1 に答える 1

3

セレクターを変更して、スライドショー内のアンカー要素を明示的に除外します。スライドショーが id を持つ要素にあると仮定します#slideshow(例として):

$('a[href*=#]:not([href=#], #slideshow a)').click(function() {

個人的に.not()は、セレクターよりもメソッドを使用する方が読みやすいと思います:not()(構文の色の強調表示はメソッドで機能しますが、単一の文字列内では機能しないためです):

$('a[href*=#]').not("[href=#], #slideshow a").click(function() {
于 2013-11-09T22:57:33.253 に答える