导航html如下

<div class="main_nav">
<a class="nav_01 active_01" href="javascript:;"></a>
<a class="nav_02" href="javascript:;"></a>
<a class="nav_03" href="javascript:;"></a>
<a class="nav_04" href="javascript:;"></a>
</div>

导航css如下

<style>
.main_nav{ width:50px; height:260px; position:fixed; bottom:90px; left:200px;}
.main_nav a{ display:block; width:70px; height:70px; background:#dedede; margin-top:1px; text-align:center; line-height:50px; font-size:18px; background:url(img/nav_bg.png) no-repeat; }
.main_nav .nav_01{ background-position:0px 0px;}
.main_nav .nav_02{ background-position:0px -71px;}
.main_nav .nav_03{ background-position:0px -143px;}
.main_nav .nav_04{ background-position:0px -215px;}
.main_nav .active{ background-position-x:-75px;}
.main_nav .active_01{ background-position:-75px 0px;}
.main_nav .active_02{ background-position:-75px -71px;}
.main_nav .active_03{ background-position:-75px -143px;}
.main_nav .active_04{ background-position:-75px -215px;}
</style>

js代码如下

$(function(){
$(window).scroll(function() {
var scrollHight=$(window).scrollTop();
var mainHight01=$(".main_01").offset().top;
var mainHight02=$(".main_02").offset().top;
var mainHight03=$(".main_03").offset().top;
var mainHight04=$(".main_04").offset().top;
if(scrollHight<mainHight02){
$(".nav_01").addClass("active_01");
$(".nav_02").removeClass("active_02");
$(".nav_03").removeClass("active_03");
$(".nav_04").removeClass("active_04");
}
if(scrollHight>mainHight02&&scrollHight<mainHight03){
$(".nav_01").removeClass("active_01");
$(".nav_02").addClass("active_02");
$(".nav_03").removeClass("active_03");
$(".nav_04").removeClass("active_04");
}
if(scrollHight>mainHight03&&scrollHight<mainHight04){
$(".nav_03").addClass("active_03");
$(".nav_02").removeClass("active_02");
$(".nav_01").removeClass("active_01");
$(".nav_04").removeClass("active_04");
}
if(scrollHight>mainHight04){
$(".nav_04").addClass("active_04");
$(".nav_02").removeClass("active_02");
$(".nav_03").removeClass("active_03");
$(".nav_01").removeClass("active_01");
}
});
$(".main_nav a").each(function(index, element) {
$(this).click(function(){
$("html,body").animate({scrollTop:$(".main_0"+(index+1)).offset().top+20},10);
});
});
});

这里需要说明的是$("html,body").animate({scrollTop:$(".main_0"+(index+1)).offset().top+20},10)这段话里的“.main_0”,这个是在你的页面中需要切换导航锚点的div中需要添加的类名,需要按此格式依次添加如main_01、main_02、main_03

$(".main_0"+(index+1)).offset().top+20中的+20是根据页面实际情况调节的值,主要是为了避免滚动事件和鼠标点击事件保持一致!

jQuery实现导航监听事件的更多相关文章

  1. jQuery页面滚动监听事件及高级效果插件

    jQuery页面滚动监听事件及高级效果插件 1. One Page scroll (只适用于上下焦点图)http://www.thepetedesign.com/demos/onepage_scrol ...

  2. jquery四种监听事件的区别

    最近找工作被问到了jquery有哪些事件监听,都有什么区别,忽然有点想不起来了... 然后上网上查看了相关的资料,总结一下,方便大家查看,也方便自己复习! 1.bind()方法: bind(type, ...

  3. 避免jquery多次监听事件

    jQuery.event.dispatch 事件分发监听源码简单理解是将绑定的事件放入队列后进行监听,如果对一个事件多次绑定(on或者bind),事件会重复添加到队列等待jq监听,这样会导致很大资源消 ...

  4. jquery实现拖拽以及jquery监听事件的写法

    很久之前写了一个jquery3D楼盘在线选择,这么一个插件,插件很简单,因为后期项目中没有实际用到,因此,有些地方不是很完善,后面也懒得再进行修改维护了.最近放到github上面,但是也少有人问津及s ...

  5. jQuery监听事件经典例子

    关键字:jQuery监听事件经典例子  js代码:  ============================================================  $(function( ...

  6. jquery监听事件on写法以及简单的拖拽效果

    引子——关于jquery的某些写法 我先不对监听事件做解释,我们先来看下jquery的一些写法吧!我们最常用的是jquery的css()方法,相信大家都会用! 假如用css设置一个属性,我们写法如下: ...

  7. jquery的监听事件和触发事件

    监听事件 $(selector).on('Event me',function(e){ //do something }) 触发事件 $(selector).trigger('Event name') ...

  8. jquery中,使用append增加元素时,该元素的绑定监听事件失效

    举例:如果在一个<div id="resultArea"></div>中,通过append添加一个id="checkOutTip"的文本 ...

  9. jquery中,使用append增加新元素时,新增元素的绑定监听事件失效的解决办法

    $("outerSelector").on("eventType","innerSelector",function(){}); 举例:如果 ...

随机推荐

  1. httpclient response 重定向

    HTTPClient请求后,重定向后,获取重定向的URL. 方法一:重定向后获取URL import org.apache.http.HttpEntity; import org.apache.htt ...

  2. DEV控件自定义排序实现

    一般的控件或者组件都支持按照某一列进行排序.但是,这种排序是根据数据源里的数据默认按照降序或升序排序的,同时这样的排序与字段的类型有关. 假设现在字段的类型是字符串类型 ,但是,存储的数据时数字加一些 ...

  3. 关于wireshark的两个抓包过滤显示的基本语法

    关于wireshark的两个基本语法 关于wireshark的两个基本语法 1. Capture Filters 语法:<Protocol name><Direction>&l ...

  4. GetMemory()函数

    NO1 void GetMemory(char *p) { p=(char *)malloc(100); } void Test() { char * str=NULL; GetMemory(str) ...

  5. .net mvc下的Areas和小写Url

    首先是一个站点有前台后台两部分,这个要怎么来做.可以在mvc项目中添加区域(Areas)来实现,当添加一个名为Admin的区域时,项目下多了一个Areas/Admin目录,里边有Controllers ...

  6. Oracle EBS-SQL (BOM-7):检查有BOM无工艺路线的子装配件或成品.sql

    select     msi.segment1,     msi.description,     msi.item_typefrom inv.mtl_system_items_b   msiwher ...

  7. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  8. openNebulafrontEnd ComputeNode 配置记录

    1,OpenNebula nfs(file system shared) for image datastore;

  9. python socket理论知识

    一.socket理论: 发现一个很好的文章,一个高手写的,我也就不再做搬运工了,直接连接吧,对理论感兴趣的可以去看看! http://www.cnblogs.com/dolphinX/p/346054 ...

  10. Root exploit for Android (adb setuid)

    /* 本文章由 莫灰灰 编写.转载请注明出处. 作者:莫灰灰    邮箱: minzhenfei@163.com */ 1. 漏洞分析 这是个非常老的漏洞了,主要利用adb启动的时候调用setuid函 ...