Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 指向导航栏中的#锚的链接单击后不会关闭_Javascript_Jquery_Css_Twitter Bootstrap - Fatal编程技术网

Javascript 指向导航栏中的#锚的链接单击后不会关闭

Javascript 指向导航栏中的#锚的链接单击后不会关闭,javascript,jquery,css,twitter-bootstrap,Javascript,Jquery,Css,Twitter Bootstrap,我之前已经解决了我的导航栏链接在被点击后不会崩溃的问题,多亏了@Kami,我用下面的代码实现了这一点 $(document).on('click','.navbar-collapse.in',function(e) { if( $(e.target).is('a') ) { $(this).collapse('toggle'); } }); 从 但是当我在下面添加这个很好的函数来防止导航栏内容重叠时,它就坏了 此函数的哪一部分导致上述内容中断?如何实现这两个功能 function scro

我之前已经解决了我的导航栏链接在被点击后不会崩溃的问题,多亏了@Kami,我用下面的代码实现了这一点

$(document).on('click','.navbar-collapse.in',function(e) {
if( $(e.target).is('a') ) {
$(this).collapse('toggle');
}
});

但是当我在下面添加这个很好的函数来防止导航栏内容重叠时,它就坏了

此函数的哪一部分导致上述内容中断?如何实现这两个功能

  function scrollToAnchor() {
if($(".jquery-anchor").length > 0 && document.URL.indexOf("#") >= 0){
var anchor = document.URL.split("#")[1];
$(".jquery-anchor").each(function() {
    if($(this).attr("name") == anchor) {
        $("html,body").animate({
                scrollTop: $(this).offset().top - 50},
            'slow');
        }           
    });

}

}

$(function() {
$("a[href*='#JDG']: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 - 30 //offsets for fixed header
    }, 1000);
    return false;
  }
 }
 });

 //Executed on page load with URL containing an anchor tag.
 if($(location.href.split("#")[1])) {
  var target = $('#'+location.href.split("#")[1]);
  if (target.length) {
    $('html,body').animate({
      scrollTop: target.offset().top - 30 //offset height of header here too.
    }, 1000);
    return false;
  }
}


});
使用来自的@Shouvik建议 我更改了一行代码,只查找以#JDG开头的锚,因为没有链接到我的模态窗口的锚。
您可以看到“我的服务”菜单项在被单击后无法关闭的情况。函数放在bootstrap.min.js文件的末尾

您实际上并没有告诉脚本关闭菜单。为此,请在
函数scrollToAnchor()
函数中添加以下行:

$('.navbar-collapse.in').collapse('hide');
编辑:再次查看脚本时,应将上面的一行放在以下几行中,而不是
function scrollToAnchor()
function,即当您单击菜单项时必须应用该行:

$("a[href*='#JDG']:not([href='#'])").click(function() {
    //...
    $('.navbar-collapse.in').collapse('hide');
});

贾斯珀指出了为什么这些在一起不起作用的问题

我只需要拆下那根绳子

return false;

从这两个函数中。

添加了该行,但运气不佳。在FF和Chrome中试用。还尝试从“隐藏”更改为“切换”,就像我最初使用“隐藏”时一样,任何第二次尝试打开下拉列表都不起作用。我是否正确放置了它?您实际上没有包含,正如…所指示的那样,您已经有一个自定义脚本,为什么不使用它而不是将自定义代码添加到标准脚本中呢?来自bootstrap“如果您使用的是编译(或缩小)的bootstrap.js,那么不需要包含它,它已经存在了。”我使用的是缩小版,你比我更了解jquery和javascript。关于这一点,我所知道的唯一一件事是,我的自定义函数解决了我的折叠问题,但一旦我使用了动画函数,它就坏了。如果我把它拿走,它就会起作用。我的问题是谁能解释为什么会这样?我正在尝试使用这两种方法,我相信一旦我找到原因,这两种方法都是可能的。