我有像这样的HTML结构
<div id="DeltaPlaceHolderLeftNavBar">
<div>
<div>
<ul>
<li><a href="link1.php"><span class="someclass">LINK1</span></a>
<ul>
<li><a href="link1a.php"><span class="someclass">LINK1A</span></a></li>
</ul>
</li>
<li><a href="link2.php"><span class="someclass">LINK2</span></a></li>
</ul>
</div>
</div>
</div>
我想更改包含子UL的那些LI的HREF。正如你在上面看到的,LINK1里面包含UL,但是LINK2没有,所以为此我写了下面的jquery代码,但是它没有用。
$('#DeltaPlaceHolderLeftNavBar div>div>ul>li>a').click(function()
{
if($(this).closest("li").children("ul").length > 0)
{
//the code comes inside this condition but following line doesn't work
$(this).closest("li").children("ul").attr("href","#");
}
});
修改
在代码
中添加了“href”标签修改 在HTML中犯了一个错误,因为我忘了我现在添加的一个div。
答案 0 :(得分:2)
我认为您只需要更改代码
$(this).closest("li").children("ul").attr("href","#");
带
$(this).closest("li").children("a").attr("href","#");
在你的if条件下。
现在您的点击事件功能变为:
$('#DeltaPlaceHolderLeftNavBar div>div>ul>li>a').click(function(event)
{
event.preventDefault();
if($(this).closest("li").children("ul").length > 0)
{
//the code comes inside this condition but following line doesn't work
$(this).closest("li").children("a").attr("href","#");
}
});
在这里,我添加了event
作为函数参数和event.preventDefault()
,以防止链接点击事件的默认值不会重定向到链接地址。