jQuery纵向导航菜单效果实现方法


Posted in Javascript onDecember 19, 2016

本文实例讲述了jQuery纵向导航菜单效果实现方法。分享给大家供大家参考,具体如下:

效果如下:

jQuery纵向导航菜单效果实现方法

核心代码如下:

$( document ).ready( function(e){
  var $catCont = $( ".cat-cont" );  //二级菜单div
  var $catList = $( ".J_Cat" );    //一级菜单li
  $catList.on( "mouseenter", function(){
    var index = $( this ).index();
    var $curCatList = $( ".cat-cont-bd>li:eq(" + index + ")" );     //鼠标移上去对应的二级菜单的li
    $catList.removeClass( "selected selected-prev" );
    $( this ).addClass( "selected" ).prev().addClass( "selected-prev" );
    $catCont.show();
    $curCatList.css( "display", "list-item").siblings().css( "display", "none" );
    var viewHeight = $( window ).height();
    var catOffsetTop = $( this ).offset().top - $( window ).scrollTop();
    var catBottomGap = viewHeight - catOffsetTop;
    var catPositionTop = $( this ).position().top;
    var catContHeight = $catCont.height();
    if( catBottomGap >= catContHeight ) {
      $catCont.css( "top", catPositionTop );
    }
    if( catBottomGap < catContHeight && viewHeight >= catContHeight ) {
      $catCont.css( "top", catPositionTop - ( catContHeight - catBottomGap ) - 20 );
    }
    if( catBottomGap < catContHeight && viewHeight < catContHeight ) {
      $catCont.css( "top", catPositionTop );
    }
    if( catBottomGap <= 66 ) {
      $catCont.css( "top", catPositionTop - catContHeight + 33 );
    }
  }).on( "mouseleave", function( event ){
    if( !$( event.relatedTarget ).hasClass( "cat-cont-bd" ) ){  //交互灾难:离开一级菜单划不到二级菜单,如何知道离开一级菜单后进入的是二级菜单?jquery提供属性:event.relatedTarget(离开后进入的对象)
      $( this ).removeClass( "selected selected-prev" );
      $catCont.hide();
    }
  });
  $catCont.on( "mouseleave", function(){
    $catCont.hide();
    $catList.removeClass( "selected selected-prev" );
  });
});

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
浅谈js中的闭包
Mar 16 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
canvas红包照片实例分享
Feb 28 Javascript
详解angular ui-grid之过滤器设置
Jun 07 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
JS高阶函数原理与用法实例分析
Jan 15 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
简单理解js的冒泡排序
Dec 19 #Javascript
JS瀑布流实现方法实例分析
Dec 19 #Javascript
移动端日期插件Mobiscroll.js使用详解
Dec 19 #Javascript
JavaScript闭包和范围实例详解
Dec 19 #Javascript
JS前端笔试题分析
Dec 19 #Javascript
利用vue实现模态框组件
Dec 19 #Javascript
JS中如何实现复选框全选功能
Dec 19 #Javascript
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP 编程安全性小结
2010/01/08 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php 邮件发送问题解决
2014/03/22 PHP
php写app用的框架整理
2019/09/29 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
python打开网页和暂停实例
2014/09/30 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python hashlib模块用法实例分析
2018/06/12 Python
详解python:time模块用法
2019/03/25 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python代码太长换行的实现
2019/07/05 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python如何调用java类
2020/07/05 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
酒店端午节促销方案
2014/02/18 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
情况说明书格式及范文
2019/06/24 职场文书
vue实现拖拽交换位置
2022/04/07 Vue.js
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电