1

Я использую Bootstrap Navbar на веб-сайте с одной страницей, и каждый якорь связан с разделом на странице. Я использую очень простой javascript, чтобы сгладить прокрутку к каждому разделу, однако это каким-то образом конфликтует с функцией краха панели навигации - когда я нажимаю ссылку, которая больше не рушится, что раздражает. Сначала я подумал, что это может быть проблема HTML (решается здесь: Bootstrap Navbar Collapse not closing on Click), но выяснил, что это проблема JS - любые идеи?Bootstrap Navbar не рушится с Smooth Scroll Script

HTML:

<nav class="navbar navbar-default mainbar" role="navigation"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle hvr-bounce-to-bottom collapsed" data-toggle="collapse" data-target="#my-navbar-collapse"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
    </div> 

    <div class="collapse navbar-collapse" id="my-navbar-collapse"> 
     <ul class="nav navbar-nav"> 
     <li><a data-toggle="collapse" data-target=".navbar-collapse" href="#link1" class="navelement">Link 1</a></li> 

     <li><a data-toggle="collapse" data-target=".navbar-collapse" href="#link2" class="navelement">Link 2</a></li> 

     </ul> 
    </div> 
</nav> 

JAVASCRIPT:

var corp = $("html, body"); 
    $(".navelement").click(function() { 
    var flag = $.attr(this, "href"); 
    corp.animate({ 
     scrollTop: $(schild).offset().top - 60 
    }, 1600, function() { 
     window.location.hash = flag; 
    }); 
    return false; 
}); 
+0

Вы нашли решение этой проблемы? – camdixon

+0

не сейчас, не могу найти его ... – Marc

ответ

1

вы можете использовать JQuery: не селектору полезности

например,

$('a[href*=#]:not([href=#], [data-toggle=collapse])').click(function(){...}) 

или в вашем примере:

var corp = $("html, body"); 
    $(".navelement:not([data-toggle=collapse])").click(function() { 
    var flag = $.attr(this, "href"); 
    corp.animate({ 
     scrollTop: $(schild).offset().top - 60 
    }, 1600, function() { 
     window.location.hash = flag; 
    }); 
    return false; 
});