文件与文件之前可以引入关系来处理的呀
引入了jQuery才能使用jQuery相关语法,方法。不然就只能使用原生javascript;
这个老师讲的不太适合新手,建议以后再看
再好好看下视频,对照下js源码
你可以把问题描述一下吗?
你可以去百度一下,http://www.jq22.com/jquery-info122
data-* html5 自定义标签 根据jq data读取数据
<div data-test="this is test" ></div>
$("div").data("test")
你可以说的再具体一点吗?或者截图说明
需要安装插件,有很多插件可以使用,如emmet,SublimeCodeIntel等,百度一下就能够出来。
这个是指选中对应的二级菜单,id对应二级菜单div中的a,b,c,d等,data('id')取的就是对应的a,b,c,d等。activeRow定义的是指向当前激活的一级菜单的行,activeMenu定义的是指向与一级菜单对应的二级菜单
这是为了触发垃圾回收机制,清楚变量引用,
求大佬帮忙
如果不加return也可以正常运行,因为if里面的代码和if下面的代码做的是一样的事情。
但这样的话,即使activeRow为null,也会把mouseenter事件里的所有代码全部运行一遍,会降低运行效率。虽然在这里并看不出差距来……
<li data-id="e"> <span>男装 / 女装 / 童装 / 内衣</span> </li>
它对应的菜单
给null 就在下次判断的时候 !active 就会为true
在这里的时候赋值了,前面undefined的时候就 if 默认判定为 false 不执行操作。
这个是事件代理的写法,这个e的名字也是有很多的,可以写ev,event都是可以的。
去jq 官网看看
我也是不显示,都写了
$(document).ready(function() {
var sub = $('#sub')
var activeRow
var activeMenu
$('#test')
.on('mouseenter', function(e) {
sub.removeClass('none')
})
.on('mouseleave', function(e) {
sub.addClass('none')
if (activeRow){
activeRow.removeClass('active')
activeRow = null
}
if (activeMenu) {
activeMenu.addClass('none')
activeMenu = null
}
})
.on('mouseenter', 'li', function(e) {
if (!activeRow){
activeRow = $(e.target).addClass('active')
activeMenu = $('#' + activeRow.data('id'))
activeMenu.removeClass('none')
return
}
activeRow.removeClass('active')
activeMenu.addClass('none')
activeRow = $(e.target)
activeRow.addClass('active')
activeMenu = $('#' + activeRow.data('id'))
activeMenu.removeClass('none')
})
})
以上仅为个人观点,如有错误请指正
你的灰色下划线是li的默认样式吧,给li加个list-style: none;试试
https://github.com/ccccccl/JD-has-no-delayed-menu
代码不完全一样,根据理解实现了功能。欢迎点赞。
第五行$("#test ul")这里出问题了,将事件绑在ul上就会出现这个问题,应该绑在整个的父元素上,也就是id="test"这个div上。
代码里面的active样式应该是这样的:
li.active{
background: ....;
}
当鼠标移动到li项的时候背景颜色会发生改变
至于activeRow和activeMenu,它们都是全局变量
请使用手机"扫一扫"x自问自答。。。。
原来jquery.min.js要放在前面。。。。
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/megadropdown.js"></script>