平滑的滚动和手风琴冲突引导

时间:2014-01-31 15:50:24

标签: javascript twitter-bootstrap smooth-scrolling

虽然有人问了几次,但我找不到能解决问题的方法。

这是我的平滑滚动代码:

$(function() {
  $('a[href*=#]:not([href=#]),a[href*=#]:not(a[data-toggle])').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;
      }
    }
  });
}); 

这是css-tricks代码,有点编辑。 这是网站:http://redrocketwebsitedesign.co.uk/test/my3DtwinAlpha/about/#arrow6

所以手风琴仍然被选中用于滚动,并且它没有运行手风琴js。 我认为我的javascript没有选择器代码存在问题: a[href*=#]:not(a[data-toggle])

感谢任何帮助: - ]

4 个答案:

答案 0 :(得分:5)

这就是你真正想要的:

$('a[href*="#"]:not([href="#"]):not([data-toggle])').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;
        }
    }
});

<强>:不使用(数据肘节]) 是为了避免使用bootstrap tab,carousel等进行平滑滚动...

答案 1 :(得分:0)

您提供的页面代码有误:

$('a[href*=#]:not([href=#]),'a[href^="#"]:not([data-toggle])').click(function() {
                           ^^^ - extra and unnecessary character

所以你的处理程序没有设置。

答案 2 :(得分:0)

您还可以考虑指定应触发平滑滚动动画的元素类(从而排除其他元素,如手风琴标签),如下所示:

$('a[href*=#][class*="smooth"]:not([href=#])').click(function() 

反之亦然,指定不应该触发脚本的元素的类(在这种情况下,我们排除触发手风琴效果的链接类):

jQuery('a[href*=#]:not([href*=#][class*="accordion-toggle"])').click(function() 

答案 3 :(得分:0)

var headp = $(“。pixxett-header”)。innerHeight();     var stick = $(“。pixxett-header.sticky”)。innerHeight();

$(document).on('click', 'a[href^="#"]:not([href="#"]):not([data-toggle])', function (event) {
event.preventDefault();

if (scroll == 0){
    $('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top - stick}, 500);
}else{

$('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top - headp}, 500);
}

});