Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 jquery scrollTop和href="#&引用;_Javascript_Jquery_Scrolltop - Fatal编程技术网

Javascript jquery scrollTop和href="#&引用;

Javascript jquery scrollTop和href="#&引用;,javascript,jquery,scrolltop,Javascript,Jquery,Scrolltop,我使用此功能滚动到所需的容器: function scrolear(destino){ var stop = $(destino).offset().top; var delay = 1000; $('body').animate({scrollTop: stop+'px'}, delay); return true; } 当这样使用时会出现问题: <a href="#" onclick="scrolear('#container');">go<

我使用此功能滚动到所需的容器:

function scrolear(destino){
    var stop = $(destino).offset().top;
    var delay = 1000;
    $('body').animate({scrollTop: stop+'px'}, delay);
    return true;
}
当这样使用时会出现问题:

<a href="#" onclick="scrolear('#container');">go</a>

因为
href=“#”
使正文滚动到页面顶部


有什么方法可以防止这种情况发生吗?

更新

<a href="#container">go</a>
$(function() {
  $('a[href^="#"]').click(function(e) {
    e.preventDefault();
    var target = $(this).attr('href');
    var stop = $(target).offset().top;
    var delay = 1000;
    $('body').animate({scrollTop: stop + 'px'}, delay);
  });
});
考虑将javascript应用于您的站点,而不是依赖它使站点正常运行。在您的示例中,这可以通过以下方式实现:

HTML:

<a href="#container">go</a>
$(function() {
  $('a[href^="#"]').click(function(e) {
    e.preventDefault();
    var target = $(this).attr('href');
    var stop = $(target).offset().top;
    var delay = 1000;
    $('body').animate({scrollTop: stop + 'px'}, delay);
  });
});
这将拦截href以#开头的所有链接上的点击,并为您添加动画。如果用户没有启用javascript,单击链接仍然会将他们带到正确的位置


希望这有帮助

更新

<a href="#container">go</a>
$(function() {
  $('a[href^="#"]').click(function(e) {
    e.preventDefault();
    var target = $(this).attr('href');
    var stop = $(target).offset().top;
    var delay = 1000;
    $('body').animate({scrollTop: stop + 'px'}, delay);
  });
});
考虑将javascript应用于您的站点,而不是依赖它使站点正常运行。在您的示例中,这可以通过以下方式实现:

HTML:

<a href="#container">go</a>
$(function() {
  $('a[href^="#"]').click(function(e) {
    e.preventDefault();
    var target = $(this).attr('href');
    var stop = $(target).offset().top;
    var delay = 1000;
    $('body').animate({scrollTop: stop + 'px'}, delay);
  });
});
这将拦截href以#开头的所有链接上的点击,并为您添加动画。如果用户没有启用javascript,单击链接仍然会将他们带到正确的位置


希望这有帮助

既然您使用jquery,我愿意

<a href="#">go</a>

$("a").click(function() {
    e.preventDefault(); // cancel's the '#' click event
    scrolear('#container');
});

$(“a”)。单击(函数(){
e、 preventDefault();//取消的是“#”单击事件
阴囊(“#容器”);
});

既然您使用jquery,我愿意

<a href="#">go</a>

$("a").click(function() {
    e.preventDefault(); // cancel's the '#' click event
    scrolear('#container');
});

$(“a”)。单击(函数(){
e、 preventDefault();//取消的是“#”单击事件
阴囊(“#容器”);
});

这将只为href分配一个javascript函数,而href什么也不做,因此不会像



这将只为href分配一个javascript函数,而href根本不起任何作用,因此不会出现像@rich.okelly的
更正答案那样的页面滚动

function scrollTosec(){
     $('a[href^="#"]').click(function(e) {
            e.preventDefault();
            var target = $(this).attr('href');
            var stop = $(target).offset().top;
            var delay = 200;
            $('body').animate({scrollTop: stop + 'px'}, delay);
          });
}

来自@rich.okelly的更正答案

function scrollTosec(){
     $('a[href^="#"]').click(function(e) {
            e.preventDefault();
            var target = $(this).attr('href');
            var stop = $(target).offset().top;
            var delay = 200;
            $('body').animate({scrollTop: stop + 'px'}, delay);
          });
}