如何添加只有同级元素的属性值
How to add attribute value of an element that only has siblings
我在下面有一个这样的场景:
<ul class="mainnav">
<li><a href="http://example.com">title</a></li>
<li>
<a href="http://example.com">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
<li><a href="http://example.com">title</a></li>
<li>
<a href="http://example.com">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
</ul>
我想在 jQuery 中将 href 属性值更改为"#",仅用于具有子导航的导航。
例如
<ul class="mainnav">
<li><a href="http://example.com">title</a></li>
<li>
<a href="#">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
<li><a href="http://example.com">title</a></li>
<li>
<a href="#">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
</ul>
有谁知道该怎么做?
您可以使用
li:has(ul) > a
仅选择和操作作为ul
同级的a
元素,如下所示:
$('ul.mainnav > li:has(ul) > a').attr('href', '#');
$('ul.mainnav > li:has(ul) > a').attr('href', '#');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="mainnav">
<li><a href="http://example.com">title</a></li>
<li>
<a href="http://example.com">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
<li><a href="http://example.com">title</a></li>
<li>
<a href="http://example.com">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
</ul>
试试这个:-
$('a').each(function(){
if($(this).next('ul').find('a').length){
$(this).attr('href','#')
}
});
$('a').each(function(){
if($(this).next('ul').find('a').length){
$(this).css('color','red')
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="mainnav">
<li><a href="http://example.com">title</a></li>
<li>
<a href="#">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
<li><a href="http://example.com">title</a></li>
<li>
<a href="#">title</a>
<ul>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
<li><a href="http://example.com">title</a></li>
</ul>
</li>
</ul>
实际上,您可以使用单个选择器来实现这一点:
$('a:not(:only-child)').attr('href','#')
您可以定位ul
.mainnav
后代的前a
兄弟姐妹
$('.mainnav ul').prev('a').attr('href', '#')
相关文章:
- javascript来显示元素属性
- 自定义HTML元素属性未显示-Web组件
- 主元素属性?(或技术)
- 使用模板后,使用Angular获取元素属性值
- 如何从不同范围外的元素属性中获取求值表达式
- 可以't访问元素属性(如果已明确设置)
- 传递引用 jQuery 后无法访问元素属性
- 如何替换元素属性中的部分文本
- 添加新元素属性
- 如何使用jQuery访问父元素属性
- 使用jQuery.attr()方法获取元素属性
- 修改时,哪些DOM元素属性会导致浏览器执行回流操作
- Javascript数据将元素属性绑定到URL中的锚href
- 初始化可从元素属性值观察到的Knockout
- 获取内联样式中的元素属性
- 如何在 html 元素属性中使用 Angular 2 外推法
- 将元素属性与 javascript 折叠方法结合使用时,引导折叠无法正常工作
- 如何观察聚合物元素属性值从索引.html的变化
- 使用 JavaScript 修改 DOM 元素属性
- 聚合物节点到元素属性