javascript jQuery问题
发布网友
发布时间:2022-05-17 13:37
我来回答
共4个回答
热心网友
时间:2022-05-17 15:06
1、首先你搞错了,菜单默认是展开的,模拟单击事件以后,收起了所有含有ul子项的菜单,所以你看到的菜单没有展开是正确的。
2、this==e.target有什么作用。this指的是定义事件的所有含有ul的li标签。e.target指的是触发事件的对象,可能是包含ul的li,也可能是该li内部的任何元素,显然我们不能点击内部任意位置都触发事件,所以必须添加判断,只有点击当前 菜单选项 时才执行收起子菜单动作,如果去掉这个判断,那么只要你点击二级菜单的任意位置,就会收起菜单,显然是不行的。你可以去掉判断看看效果就明白了。
3、return false 在本例没有实际意义,完全可以去掉。他的意义,你可以理解为终止单击事件,防止触发其他的动作,比如说,链接跳转,页面回发等。但是本例这些都没有,所以是可以去掉的
热心网友
时间:2022-05-17 16:24
其实都是一个问题。
加载时触发单击事件:单击事件是单击时才会触发的,这里加载的时候,自动模拟了一下单击事件。
也就是本来菜单是展开的,这里加载时模拟了一下单击,就把菜单合上了。
this==e.target 的作用是判断单击的是不是自己这个元素。因为$("li:has(ul)")这个选择器会把所有的有ul的li全部选择,分不清是哪一个。
return false 代码本身已经注释了,没什么好说的。
热心网友
时间:2022-05-17 17:59
加载时触发单击事件似乎是为了使所有的菜单处于可见状态
function(e)看到这个参数e了吗,e.target指的就是鼠标当前点击的目标,而this代表的是li:has(ul),
return false ;可以阻止默认事件比如冒泡,表单提交等。
没有展开,那就用模拟事件试试也就是trigger()用法去查API吧
热心网友
时间:2022-05-17 19:50
$(function(){} 这个代表一加载页面的时候调用。
$("li:has(ul)").click(function(e) 给li 下的 ul 添加 click 单击事件
}).css("cursor","pointer").click();//加载时触发点击事件 这里就是促发这个click事件
this==e.target this 代表当前节点 e.targe 代代表当前事件节点 一开是没加载就是因为 开始触发事件的的节点不等,你只是通过js代码促发,this节点显然不会事件节点 ,当鼠标点时 this节点等于鼠标点的节点,该节点是加了事件的即事件节点 所以是相等的。
return是跳出方法体,不执行下面的代码,至于false 与 true 要看你外部调用此方法的逻辑。
这里没有其他方法调用该方法 return 什么都一样