检查菜单中的链接
Checking for links in menu
我有一个代码,我有链接在菜单和子菜单。我试着写脚本,检查如果这个"li"有子菜单,这个链接不起作用,但如果"li"没有子菜单,这个链接必须移动到它的href.
$(document).on("click", ".name ul li a", function (e) {
if ($(this).next("ul")) {
e.preventDefault();
if ($(this).parent().hasClass("active")) {
$(this).next("ul").show();
$(this).parent().removeClass("active");
}
else {
$(this).next("ul").hide();
$(this).parent().addClass("active");
}
}
else {
$(this).css( "color", "yellow" );
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "name">
<ul>
<li><a href="#">text A</a></li>
<li><a href="#">text A</a>
<ul>
<li><a href="#">text B</a></li>
<li><a href="#">text B</a></li>
</ul>
</li>
<li><a href="#">text A</a></li>
<li><a href="#">text A</a></li>
<li><a href="#">text A</a>
<ul>
<li><a href="#">text B</a></li>
<li><a href="#">text B</a></li>
</ul>
</li>
</ul>
</div>
但是现在菜单中的所有链接都不起作用了。请告诉我,错在哪里?
您的if
将始终为true,因为$(this).next("ul")
将始终创建一个对象,即使没有找到选择器匹配。
if(Object)
总是正确的
您需要检查jQuery对象中匹配选择器的length
if ($(this).next("ul")) {
if ($(this).next("ul").length) {
直接返回true;而不是
$(this).css( "color", "yellow" );
返回true保持正常的浏览器行为(在本例中遵循链接)。返回false取消默认浏览器行为:)
相关文章:
- 我的下拉菜单中的链接不起作用
- 绝对链接/相对链接均未获胜't在菜单中工作
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- 当主导航链接悬停时,在侧菜单中显示链接
- 如何在每个下拉菜单项的每个类别下输出链接
- 下拉菜单在我进入链接之前消失了
- 如何分配数据切换=“;下拉菜单”;用于wordpress中的父链接
- 用这个jQuery动画菜单悬停超链接
- 每个链接的菜单下方的进度条
- Php菜单查询数据库并显示文本/链接
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 单击手风琴菜单外的链接时折叠jQuery手风琴
- 在阻止默认操作时启用菜单的链接
- jQuery UI链接选择菜单.单击按钮时窗体将重置
- 如何在单击子链接时停止垂直菜单的手风琴
- 当屏幕尺寸较小时,可使用Javascript向移动菜单添加链接.不再有效
- 下拉显示Javascript链接菜单的问题
- 链接菜单w/MouseOver javascript
- 启动.滚动链接菜单并修复页面顶部的导航栏
- 角度 JS 指令模糊事件不适用于链接菜单