Javascript 如何使此代码仅平滑滚动我想要的元素?

Javascript 如何使此代码仅平滑滚动我想要的元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个平滑的滚动代码,工作得很好,问题是它工作得太好了。我还有其他元素使用“#”作为标记(例如:但我不希望平滑滚动以选项卡为目标。我有以下平滑滚动代码: jQuery(document).ready(function($) { $('a[href*=#]:not([href=#])').click(function() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'

我有一个平滑的滚动代码,工作得很好,问题是它工作得太好了。我还有其他元素使用“#”作为标记(例如:但我不希望平滑滚动以选项卡为目标。我有以下平滑滚动代码:

    jQuery(document).ready(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;
   }
 }
});
});

如果您不想影响带有
#
作为href值的链接,是否仍要修改此选项以仅针对页面的锚定而非选项卡锚定

$("[attribute!='value']")
因此,在您的示例中,指定
href
作为属性,指定
#
作为值

$("a[href!='#']").on('click', function(e){
    e.preventDefault();
    //do stuff
});

如果您不想将
#
作为href值影响链接,则应使用如下语法:

$("[attribute!='value']")
因此,在您的示例中,指定
href
作为属性,指定
#
作为值

$("a[href!='#']").on('click', function(e){
    e.preventDefault();
    //do stuff
});

你好,迈克,快速提问:当你说你希望“目标锚”成为目标,而不是“标签锚”时,你的意思是你有一个带有标签的菜单,javascript函数将用户滚动到该菜单标签锚,而不是你想要的其他锚?嗨@NachoDawg,是的,我有一个带有标签的菜单,我不想要那个smoo滚动到目标。当我点击选项卡时,会出现平滑滚动动画,我不想在该选项卡上看到。我不确定我是否得到了它。预期的功能是点击选项卡,网站应该向下滚动到下面相应的锚?用户应该点击什么,然后会发生什么?你能想象一下吗请编辑您的问题以添加HTML供我们查看?您好,迈克,快速提问:当您说您希望“目标锚定”成为目标而不是“选项卡锚定”时,您的意思是您有一个包含选项卡的菜单,javascript函数会将用户滚动到该菜单选项卡锚定,而不是您想要的其他锚定位置?Hi@NachoDawg,是的,我有一个带有选项卡的菜单,我不希望平滑滚动到目标。发生的是,当我单击选项卡时,它会执行平滑滚动动画,我不希望在该选项卡上执行平滑滚动动画。我不确定我是否得到了它。预期的功能是单击选项卡,网站应该向下滚动到下面相应的锚?应该做什么用户单击,然后会发生什么?您是否可以编辑您的问题以添加HTML供我们查看?当我在其中添加HTML时,它仍然针对我不希望它针对的选项卡。您可能应该解释哪些选项卡不针对更具体的目标。您可以给它们一个类并在选择器中指定该类。当我添加该类时在这里,它仍然指向我不希望它指向的选项卡。您可能应该更具体地解释哪些选项卡不指向。您可以给它们一个类,然后在选择器中指定这个类。