【发布时间】:2013-03-07 19:08:18
【问题描述】:
我尝试了几种方法,但都无法完成。
我正在设计 ul/li 的菜单。我想这样做,如果<li> 具有 href 属性,jQuery 会为其创建一个事件以重定向到该属性存储的站点。但是当没有href时,什么都不会发生。
问题是当我点击一些 li 时,同一分支中的那些也得到了事件
$("#menu-h > li li").each(function() {
if($(this).attr("href")) {
$(this).click(function() {
window.location = $(this).attr("href");
return false;
});
}
});
似乎each() 不会遍历#menu-h > li 之后的所有 'li',而只会遍历直系后代(子代),所以当我单击 li 内部的更多内容时,例如#menu-h > li > li,$(this ) 值存储其父级的 DOM 元素。是选择器错误的问题,还是我无法遍历所有后代,只能遍历直接后代?
【问题讨论】:
-
试试
$("#menu-h li[href]") -
请包含 HTML 示例
-
事件传播。如果你点击一个元素,你也会点击它的父元素。如果你想停止传播,你需要明确地这样做
-
我怎样才能完成它?我试过在 if 和 if 之外使用 event.stopPropagation(),但它像以前一样工作或完全停止事件(即使单击右侧 li 后也不重定向)
标签: jquery jquery-selectors each