Javascript 禁用`<;a>;`链接内部<;ul>;问题
基本上,我有一个嵌套列表的HTML代码块,如下所示:Javascript 禁用`<;a>;`链接内部<;ul>;问题,javascript,jquery,html,Javascript,Jquery,Html,基本上,我有一个嵌套列表的HTML代码块,如下所示: <ul> <li class="level_1"> <a href="level1.html">Insulated And Extruded</a> <ul class="level_2"> <li><a href="">TE77</a></li> <li><a
<ul>
<li class="level_1">
<a href="level1.html">Insulated And Extruded</a>
<ul class="level_2">
<li><a href="">TE77</a></li>
<li><a href="">TE78</a></li>
<li><a href="">T77</a></li>
<li><a href="">TS77</a></li>
</ul>
</li>
<li class="level_1"><a href="">Grille Type Rolling</a></li>
<li class="level_1"><a href="">PVC High Speed Doors</a></li>
<li class="level_1"><a href="">Swinging doors</a></li>
</ul>
有人能告诉我如何解决这个问题吗 您可以检查
li
是否有ul
并像这样禁用a
$('.level_1:has(ul)>a').removeAttr('href')
-
您可以如下设置事件侦听器:
将id设置为顶级ul元素:
<ul id="top_level_ul">
备选方案(指针事件) 您还可以设置
指针事件:无
以防止任何交互:
$('#top_level_ul > li > a').each(function() {
$(this.addClass('noPointer'));
});
CSS
您必须从$('ul li')
请参见以下示例:
-
变量$node=$('ul li');
if($node.has('ul').length){
$node.find('ul li>a').removeAttr('href');
}
UPD
或
将影响子
中的所有
,我现在明白了。。。让我检查一下。在嵌套链接中添加href,您将看到。你的整个方法需要重新思考。if()
不是筛选特定匹配项的最简单方法。。。remove()是不正确的,尽管“$('.level_2')。同胞('a')…”是获取有问题链接的一种方式。是的…理解,但OP不想删除整个元素,只需禁用itOk$('.level_2')。同级('a')。css('pointer-events','none');
$(document).on('click', '#top_level_ul > li > a', function(e) {
e.preventDefault();
});
$('#top_level_ul > li > a').each(function() {
$(this.addClass('noPointer'));
});
.noPointer {
pointer-events: none;
}
var $node = $('ul li');
if($node.has('ul').length) {
$node.find('ul li > a').removeAttr('href');
}
$(document).ready(function(){
$('.level_2').siblings('a').remove();
});
$(document).ready(function(){
$('.level_2').siblings('a').css('pointer-events','none');
});
$(document).ready(function(){
$('.level_2').siblings('a').attr('onclick','return false');
});