2017-09-12 60 views
0

我正在使用JavaScript进行平滑滚动(在脚本标记下方),并且还有锚链接的href。所有的锚都工作正常,但JavaScript似乎是禁用URL的href。你能帮我重写一下,这样也能起作用吗?URL href失败:锚点,URL和Javascript

<ul class="snip1143"> 
    <li class><a href="#home1" data-hover="Home">Home</a></li> 
    <li><a href="#about1" data-hover="About">About</a></li> 
    <li><a href="#experience1" data-hover="Work">Work</a></li> 
    <li><a href="URL HERE" data-hover="Blog">Blog</a> </li 
    <li><a href="#contact1" data-hover="Contact">Contact</a></li> 

<script> 

    $(document).on('click', 'a', function(event) { 
     event.preventDefault(); 

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

</script> 
+2

之前你应该修理你的标记。第四李需要一个结束标签。并且你的ul需要一个结束标签 –

回答

0

event.preventDefault()将阻止默认值,这对于锚点将转到该url。您可能想要为要设置动画的锚添加一个类,并仅选择这些类,而不是在所有锚标记上防止默认。

+0

如果可能,请详细说明代码。我有点新手。感谢您的输入。 –

0

由于您对每个元素都有唯一的data-hover,因此我们只需要验证data-hover属性的值即可对其进行过滤。

<script> 

    $(document).on('click', 'a', function(event) { 
     if($(this).data('hover') !== "Blog"){  
     $('html, body').animate({ 
      scrollTop: $($.attr(this, 'href')).offset().top 
     }, 500); 
    }// since i noticed that you want to redirect the page once the Blog link is clicked 
    }); 

</script> 

让我知道如果这可以帮助你解决你的问题。

+0

谢谢,这对我有用!不幸的是,所有其他的href链接现在在菜单栏上的“博客”之外被禁用。有没有办法让我解决这个问题?另一个提到可能使用一个类。你能帮我实现吗? –

+0

嗨,如果你想设置链接(hrefs)的默认动作,你只需要在条件语句中为它们设置一些验证,比如说“博客”,“工作”和“联系人”标签(或按钮或不管你怎么称呼它们),如果你想让这3个执行默认的重定向动作,在这里包括它们($(this).data('hover')!==“Blog”){ ($(this).data('hover')!==“Blog”)||($(this).data('hover')!==“Work”)||($(this).data 'hover')!==“Contact”)){然后插入event.preventDefault();我希望你对我的回答有了启发。 – jhek

+0

这些其他URL链接遍及我的页面(不在菜单栏上),但我需要它们工作。我知道如何让菜单栏中的URL链接工作,但那些散布在我的页面中的其他链接呢?他们都是残疾人士。什么是我可以在我的情况下挑出这些的方法? –