Jquery:正在删除父列表项的href属性
Jquery: Removing href attribute of parent list items
我有一个菜单,由嵌套在两个<li>
s中的两个<ul>
s组成。例如:
<ul>
<li><a href="somewhere.html">Item 1</a></li>
<li><a href="somewhere.html">Item 2</a></li>
<li><a href="somewhere.html">Item 3</a>
<ul>
<li><a href="somewhere.html">Sub Item 1</a></li>
<li><a href="somewhere.html">Sub Item 2</a></li>
</ul>
</li>
</ul>
对于具有嵌套<ul>
的<li>
,我想用#替换它们的href
属性,例如:
<li><a href="somewhere.html">Item 2</a></li>
<li><a href="#">Item 3</a>
<ul>
<li><a href="somewhere.html">Sub Item 1</a></li>
我写了这个脚本来做到这一点,但它似乎影响了两个列表中的所有a标记。
$.each($("#menu ul li"), function() {
if($(this).has("ul")){
$(this).find("a").attr("href", "#");
};
});
不知道有没有人能告诉我哪里出了问题?
如果dom有如下子项,请检查dom。
$(this).children('ul').length
在您的代码中,如果您使用.has
进行检查,则其内部条件
已测试的工作代码
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function()
{
$.each($("#menu ul li"), function()
{
if($(this).children('ul').length > 0)
{
$(this).find("a").attr("href", "#");
};
});
});
</script>
<ul>
<li><a href="somewhere.html">Item 1</a></li>
<li><a href="somewhere.html">Item 2</a></li>
<li><a href="somewhere.html">Item 3</a>
<ul>
<li><a href="somewhere.html">Sub Item 1</a></li>
<li><a href="somewhere.html">Sub Item 2</a></li>
</ul>
</li>
</ul>
找到嵌套的<ul>
元素,导航到它们的父<li>
,选择其中的<a>
,然后更改href
。
$('li > ul').parent().children('a').attr('href', '#');
至于为什么您的代码不起作用,主要有两个问题。首先,
find
遍历所有级别的子体。您实际要做的只是遍历一级子体,所以请使用children
。其次,has
(非直观地)不返回bolean值,它只是将匹配集过滤为必要的元素(因此在if
中使用它是没有意义的,因为任何非空对象的计算结果都是true)。更正后,您的代码将显示为:
$("#menu ul li").has("ul").children("a").attr("href", "#");
这两种方法中的任何一种都可以满足您的需要,但第二种方法更简单,因此可能会产生更好的性能。
这将很好:http://jsfiddle.net/H8JDy/
$('#menu ul li > ul').siblings('a').attr('href', '#'); // <---this does the trick
正如nbrooksthere's no reason for it to be wrapped in the loop
相关文章:
- 锚点元素的href属性自动更改
- href属性内的javascript函数
- 点击获取jQuery上的href属性
- href属性在页面加载后拒绝重新设置
- 使用 Div 标签的 location.href 属性时,Eval 不起作用
- 将定位点的 href 属性与“#”进行比较
- SEO机器人是否总是遵循A标签的href属性中的URL,即使点击/点击被Javascript拦截
- 如何删除锚标记的 href 属性内的 #
- 如何防止jQuery在单击时更改href属性
- 通过jQuery Mobile中的jQuery更改href属性
- 查找jquery多选符的href属性
- 如何使用javascript更改href属性
- Javascript href 属性用于 css 未更新
- 恢复javascript函数中的href属性
- 单击即可将css href属性更改为多个html页面
- 在锚标记的 href 属性中执行 JavaScript
- 在IE 7中,如果链接是使用jQuery创建的,如何获取链接的href属性的文字值
- 如何在 DOM 加载后使用 JavaScript 或 JQuery 从 href 属性中删除字符
- 省略元素中的 href 属性
- getAttribute('href') 始终返回“#”,而不考虑移动浏览器上的实际 href 属性