2014-02-27 57 views
1

我正在构建单页网站,需要'滚动到部分导航',我将此jsfiddle用作基本模板。正如你可以看到它就像一个魅力,但在我的网站上的一些原因,它似乎并没有工作,我已经粘贴下面滚动到部分导航问题

<!-- THIS IS A SECTION --> 

<section id="about" data-anchor="about"> 
    <div id="about-wrap"> 
    <h1>I'm a really cool title about<br>Small Space Living</h1> 
    <p>Lorem ipsum dolor sit amet, consectetur ...esse.</p> 
    <a class="link" href=""><span>Learn More</span></a> 
    </div> 
</section> 


<!-- THIS IS MY NAVIGATION --> 

<div class="navbar pull-right"> 
    <ul class="navi"> 
    <li><a href="#" data-scroll="about">About Us<hr></a></li> 
    <li><a href="#" data-scroll="solutions">Solutions<hr></a></li> 
    <li><a href="#" data-scroll="contact">Contact Us<hr></a></li> 
    </ul> 
</div> 


<!-- THIS IS MY JQUERY --> 

<script> 
$(document).ready(function(){ 
$(function(){ 
$('navi a').on('click', function() { 

    var scrollAnchor = $(this).attr('data-scroll'), 
     scrollPoint = $('section[data-anchor="'+scrollAnchor+'"]').offset().top -10; 

    $('body,html').animate({ 
     scrollTop: scrollPoint 
    }, 500); 

    return false; 

}) 

$(window).scroll(function() { 

}); 

$(window).scroll(function() { 

    if ($(window).scrollTop() >= 100) { 

     $('nav').addClass('fixed'); 

    } else { 

     $('navi').removeClass('fixed'); 

    } 

}); 
});//]]> 
}); 
</script> 

了几个重要的代码片段有CSS相当数量,但我无法想象这是一个风格问题,因为jsfiddle没有风格,仍然有效。

任何帮助真的不胜感激。提前致谢!

+0

我只能猜测,但我会说你可能不会在你的网站上打包你的代码。 JSfiddle自动为你做这件事。 –

+0

我明白了,你的意思是jquery代码我是对的吗?你知道那个看起来像什么吗?当我们说话的时候,我正在盯着我的Jquery,但我仍然是新手!谢谢你的帮助@JamesKorden – user3357728

+0

我已经用一个例子添加了一个答案。$(document).ready(function(){')的例子同样有效,但我想为地狱展示一种不同的方式) –

回答

0

我创建了其中的以下文件:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
</script> 

<script> 
window.onload = function() { 

$('nav a').on('click', function() { 

    var scrollAnchor = $(this).attr('data-scroll'), 
     scrollPoint = $('section[data-anchor="'+scrollAnchor+'"]').offset().top -10; 

    $('body,html').animate({ 
     scrollTop: scrollPoint 
    }, 500); 

    return false; 

}) 

$(window).scroll(function() { 

    if ($(window).scrollTop() >= 100) { 

     $('nav').addClass('fixed'); 

    } else { 

     $('navi').removeClass('fixed'); 

    } 
}); 

} 
</script> 
<header></header> 

<nav> 

    <a href="#" data-scroll="top">TOP</a> 

    <a href="#" data-scroll="news">NEWS</a> 

    <a href="#" data-scroll="products">PRODUCTS</a> 

    <a href="#" data-scroll="contact">CONTACT</a> 

</nav> 



    <section id="top" data-anchor="top"> 

     <h4>TOP</h4> 

      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque feugiat eleifend orci, eget aliquam dolor elementum vel. Aliquam eu nulla eros, et tincidunt felis. Pellentesque congue sodales eleifend. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla suscipit nulla vel nisi fermentum ultricies. Integer ligula elit, gravida ac pretium nec, eleifend ultrices purus. Duis cursus orci et urna accumsan tempor. Nunc mattis tincidunt nulla, id porta velit sollicitudin blandit.</p> 

      <p>Duis vel augue quis elit ultrices fermentum ut eu risus. Mauris dictum nisl eget lorem pulvinar sit amet bibendum nunc scelerisque. Suspendisse ac libero magna, at imperdiet leo. Pellentesque vulputate venenatis vestibulum. Aenean varius turpis quis sem adipiscing volutpat. Fusce scelerisque iaculis augue, eget fringilla velit mattis nec. Maecenas sagittis dolor eget felis cursus imperdiet. Morbi ut dui libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sit amet mi ac diam semper hendrerit a id tellus. Morbi accumsan magna sit amet velit ultricies ut dapibus justo rutrum. Ut et ante dui, vel pellentesque velit.</p> 

    </section> 

    <section id="news" data-anchor="news"> 

     <h4>NEWS</h4> 

      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque feugiat eleifend orci, eget aliquam dolor elementum vel. Aliquam eu nulla eros, et tincidunt felis. Pellentesque congue sodales eleifend. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla suscipit nulla vel nisi fermentum ultricies. Integer ligula elit, gravida ac pretium nec, eleifend ultrices purus. Duis cursus orci et urna accumsan tempor. Nunc mattis tincidunt nulla, id porta velit sollicitudin blandit.</p> 

      <p>Duis vel augue quis elit ultrices fermentum ut eu risus. Mauris dictum nisl eget lorem pulvinar sit amet bibendum nunc scelerisque. Suspendisse ac libero magna, at imperdiet leo. Pellentesque vulputate venenatis vestibulum. Aenean varius turpis quis sem adipiscing volutpat. Fusce scelerisque iaculis augue, eget fringilla velit mattis nec. Maecenas sagittis dolor eget felis cursus imperdiet. Morbi ut dui libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sit amet mi ac diam semper hendrerit a id tellus. Morbi accumsan magna sit amet velit ultricies ut dapibus justo rutrum. Ut et ante dui, vel pellentesque velit.</p> 

    </section> 

    <section id="products" data-anchor="products"> 

     <h4>PRODUCTS</h4> 

      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque feugiat eleifend orci, eget aliquam dolor elementum vel. Aliquam eu nulla eros, et tincidunt felis. Pellentesque congue sodales eleifend. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla suscipit nulla vel nisi fermentum ultricies. Integer ligula elit, gravida ac pretium nec, eleifend ultrices purus. Duis cursus orci et urna accumsan tempor. Nunc mattis tincidunt nulla, id porta velit sollicitudin blandit.</p> 

      <p>Duis vel augue quis elit ultrices fermentum ut eu risus. Mauris dictum nisl eget lorem pulvinar sit amet bibendum nunc scelerisque. Suspendisse ac libero magna, at imperdiet leo. Pellentesque vulputate venenatis vestibulum. Aenean varius turpis quis sem adipiscing volutpat. Fusce scelerisque iaculis augue, eget fringilla velit mattis nec. Maecenas sagittis dolor eget felis cursus imperdiet. Morbi ut dui libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sit amet mi ac diam semper hendrerit a id tellus. Morbi accumsan magna sit amet velit ultricies ut dapibus justo rutrum. Ut et ante dui, vel pellentesque velit.</p> 

    </section> 

    <section id="contact" data-anchor="contact"> 

     <h4>CONTACT</h4> 

      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque feugiat eleifend orci, eget aliquam dolor elementum vel. Aliquam eu nulla eros, et tincidunt felis. Pellentesque congue sodales eleifend. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla suscipit nulla vel nisi fermentum ultricies. Integer ligula elit, gravida ac pretium nec, eleifend ultrices purus. Duis cursus orci et urna accumsan tempor. Nunc mattis tincidunt nulla, id porta velit sollicitudin blandit.</p> 

      <p>Duis vel augue quis elit ultrices fermentum ut eu risus. Mauris dictum nisl eget lorem pulvinar sit amet bibendum nunc scelerisque. Suspendisse ac libero magna, at imperdiet leo. Pellentesque vulputate venenatis vestibulum. Aenean varius turpis quis sem adipiscing volutpat. Fusce scelerisque iaculis augue, eget fringilla velit mattis nec. Maecenas sagittis dolor eget felis cursus imperdiet. Morbi ut dui libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sit amet mi ac diam semper hendrerit a id tellus. Morbi accumsan magna sit amet velit ultricies ut dapibus justo rutrum. Ut et ante dui, vel pellentesque velit.</p> 

    </section> 

然后我将它保存为index.html。打开它,它工作。

您遇到的主要问题是$('navi a'),我将其更改为'$('nav a')`。我认为一个小小的错字会让你失望。

编辑 我觉得我应该解释更好一点。您不应使用.navi,因为它指的是对象的类别:。您不应该使用#navi,因为它指的是对象的ID:。使用navi引用一个对象。既然你想引用一个标签,我们使用$('nav')。希望这个澄清一点。

+0

就是这样!谢谢James非常感谢您为帮助我解决问题所付出的所有时间和精力! – user3357728

0

http://jsfiddle.net/gUWdJ/609/

它在那里很好用。是否有可能阻止此脚本的其他js错误?

@EDIT:试试这段代码:你错过了班级定义中的一个点! $('.navi a')

$(document).ready(function(){ 
$('.navi a').on('click', function() { 

var scrollAnchor = $(this).attr('data-scroll'), 
    scrollPoint = $('section[data-anchor="'+scrollAnchor+'"]').offset().top -10; 

$('body,html').animate({ 
    scrollTop: scrollPoint 
}, 500); 

return false; 

}); 
}); 

如果你不希望任何动画,你可以使用这个简单的锚有:

<nav> 

<a href="#top">TOP</a> 

<a href="#news">NEWS</a> 

<a href="#products">PRODUCTS</a> 

<a href="#contact">CONTACT</a> 

</nav> 

http://jsfiddle.net/gUWdJ/608/

+0

感谢@Emanuele Parisio我们现在有网站导航到特定的部分,但它只出现在部分,而不是向下滚动。我无法看到任何会导致此问题的jquery,但我注意到您的jsfiddle没有jquery?再次感谢。到目前为止已帮助很大 – user3357728

+0

如果你有一个链接,我可以直接看它。 问题不在于脚本,因为它的效果很好。所以问题在别的地方。 –