JS面向对象方法(一): 使用原生JS 实现导航栏下多级分类弹出效果
利用二级菜单的onmouseover/out事件 重新构建一级菜单 ".hover" 样式类
代码如下:
CSS部分: 在原来的目标:hover样式中 增加 .hover状态
li.app_jd a:hover,li.app_jd a.hover{
background-position: -126px -397px;
}
li.service>a:hover,li.service>a.hover {
background-image:url(images/jt_up.jpg);
background-color:#fff;
border:1px solid #DDD;
border-bottom-width:0px;
position:relative;
z-index:;
}
li.app_jd a:hover,li.app_jd a.hover{
background-position: -126px -397px;
}
JS部分:在原来的触发事件上 新增了 二级菜单触发onmouseover/out时 设置各自的一级菜单的className 为 “hover”;
window.onload = function(){
//顶部导航栏弹出
$("#top_box .app_jd")[0].onmouseover=$("#top_box .service")[0].onmouseover=showItem;
$("#top_box .app_jd")[0].onmouseout=$("#top_box .service")[0].onmouseout=hideItem;
//商品主分类栏弹出
$("#category")[0].onmouseover=showCate;
$("#category")[0].onmouseout=hideCate;;
//商品一级分类弹出二级分类
var lis = $("#cate_box>li");
for(var i=0;i<lis.length;i++){
lis[i].onmouseover=showSubCate;
lis[i].onmouseout=hideSubCate;
}
}
function showItem(){
this.$("[id$='_items']")[0].style.display="block";
this.$("a")[0].className="hover";
}
function hideItem(){
this.$("[id$='_items']")[0].style.display="none";
this.$("a")[0].className="";
}
function showCate(){
this.$("#cate_box")[0].style.display="block";
}
function hideCate(){
this.$("#cate_box")[0].style.display="none";
}
function showSubCate(){
this.$(".sub_cate_box")[0].style.display="block";
this.$("h3")[0].className="hover";
}
function hideSubCate(){
this.$(".sub_cate_box")[0].style.display="none";
this.$("h3")[0].className="";
}
TIPS:
*越是熟悉 HTML/CSS的数据结构,就越可以在JS部分用更“优雅的”代码来执行更多的事情。
JS面向对象方法(一): 使用原生JS 实现导航栏下多级分类弹出效果的更多相关文章
- JavaScript中函数和类(以及this的使用<重点>,以及js和jquery讲解,原生js实现jquery)
1.javascript中以函数来表示类: 一般函数是小写开头:function foo() 类开头是大写:function Foo() 实例化类: obj = new Foo() 其他属性就同类是一 ...
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...
- JS面向对象方法(二) 面向对象方法实现橱窗式图面预览以及放大功能
效果图: HTML结构如下: <div id="preview"> <div id="mediumDiv"> <img id=& ...
- css+html+js实现多级下拉和弹出菜单
本文将使用css+html+js实现横向菜单.具有多级弹出菜单下拉. 首先我们来看看效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgy ...
- iOS 11 使用方法替换(Method Swizzling),去掉导航栏返回按钮的文字
方法一:设置BarButtonItem的文本样式为透明颜色,代码如下: [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegro ...
- 原生JS面向对象方法实现万年历
###面向对象的方法实现万年历 实现思路: 1.创建构造函数constructor ``` function Calender(main){ this.current ...
- js判断类型为数字的方法实现总汇——原生js判断isNumber()
方法一[推荐]: 最容易想到的是用typeof来判断是否是number类型 ,但是如果为NaN会被认为也是number类型,因此我们需要使用isNaN来排除NaN的情况. function isNum ...
- JS对象转URL参数(原生JS和jQuery两种方式)
转自:点击打开链接 现在的js框架将ajax请求封装得非常简单,例如下面: $.ajax({ type: "POST", url: "some.php", da ...
- js中for循环(原生js)
1,普通for循环,经常用的数组遍历 var arr = [1,2,3,4,5]; for ( var i = 0; i <arr.length; i++){ console.log(arr[i ...
随机推荐
- atol实现【转】
int my_atoi(const char *str) { assert(str != NULL); ; ; while(*str == ' ' || *str == '\n' || *str == ...
- escape() VS encodeURI() VS encodeURIComponent()
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- UVA1482 Playing With Stones —— SG博弈
题目链接:https://vjudge.net/problem/UVA-1482 题意: 有n堆石子, 每堆石子有ai(ai<=1e18).两个人轮流取石子,要求每次只能从一堆石子中抽取不多于一 ...
- mongodb存储二进制数据的二种方式——binary bson或gridfs
python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...
- Python之Numpy详细教程
NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...
- 洛谷P4009汽车加油行驶问题——网络流24题(最短路)
题目:https://www.luogu.org/problemnew/show/P4009 网络流24题中不是网络流的最短路题: 把每个点拆成各个油量上的点,根据要求连边即可: 注意:点数最大为10 ...
- ascall文件和二进制文件
ascall文件可以打开让我们看你们的具体内容. 二进制文件打开我们看到的就是一堆乱码. ascall在换行时不同的平台不一样: windows上面用 \r\n linux上面用 \n 二进制的内容 ...
- keystone nova v2 python
- CodeForces 1111E. Tree
题目简述:给定$n \leq 10^5$个节点的无根树,以及$q \leq 10^5$个询问.每个询问给定$k \leq 10^5$个不同的节点$a_1, a_2, \dots, a_k$,以及参数$ ...
- B. One Bomb (#363 Div.2)
B. One Bomb time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...