我有一个自定义手风琴菜单,每个可扩展的UL(toggle_action)旁边都有[+]链接以扩展其子(div_toggle)。对于活跃的
这是我的HTML:
<ul class="topnav">
<li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>Governance</h3>
<ul class="div_toggle">
<li><h3><img src="/images/spacer.gif"/><a href="/governance">Governance</a></h3></li>
<li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>Board of Directors</h3>
<ul class="div_toggle">
<li><h3><img src="/images/spacer.gif"/><a href="/governance/bod" class="active">Board of Directors</a></h3></li>
<li><h3><img src="/images/spacer.gif"/><a href="/governance/bod/min">Minutes</a></h3></li>
</ul>
</li>
<li><img src="/images/spacer.gif"/><a href="/governance/com">Committees</a></h3></li>
</ul>
</li>
<li><h3 class="toggle_action"><img class="img-swap" src="/images/plus.gif"/>About</h3>
<ul class="div_toggle">
<li><h3><img src="/images/spacer.gif"/><a href="/about">About Us</a></h3></li>
<li><h3><img src="/images/spacer.gif"/><a href="/about/contact">Contact</a></h3></li>
</ul>
</li>
</ul>
和jQuery:
$('.topnav a.active').parents().attr('src').replace('plus.gif','minus.gif');
我做错了什么?提前谢谢!
答案 0 :(得分:0)
img
标记不是a
标记的父级,它们是兄弟姐妹。您想使用.prev()
代替.parents()
。
并且attr
已弃用,您应该使用prop
。而且您不需要使用replace
,只需执行prop('src', 'minus.gif')
答案 1 :(得分:0)
您嵌套html的方式,它永远不会抓取<img>
标记,因为它不被视为active
类<img>
标记的父级。
您应该考虑更改HTML输出的方式。
但是,这是以当前嵌套方式解决问题的方法。
$(".active").parents(".div_toggle").prev("h3:first").children(":first").addClass("plus");
$('h3.toggle_action img').each(function(){
if ($(this).attr('src') && $(this).hasClass('plus') && $(this).attr('src').indexOf('plus.gif') > 0)
{
var imgSrc = $(this).attr('src').replace('plus.gif','minus.gif');
$(this).attr('src', imgSrc);
}
});
好的,它的作用是,它抓取"active"
父项<h3>
子<img>
并为其添加一个名为"plus"
的类,并在循环时使用此类<h3 class="toggle_action"><img>
标记,确保使用plus作为类来获取img标记,并将其他标记更改为minus.gif图像。
希望这会对你有所帮助。如果是,请将其标记为您的答案。