2013-03-07 60 views
2

当点击$ menulink时,我想要.menu-link中的跨度使它的类切换。我想下面的代码,但我做错了什么,因为它不工作:当点击链接时,jQuery切换跨度类

$(document).ready(function() { 
$('body').addClass('js'); 
var $menu = $('#menu'), 
$menulink = $('.menu-link'), 
$arrow = $('.arrow-down'); 

$menulink.click(function() { 
$menulink.toggleClass('active'); 
$menu.toggleClass('active'); 
$arrow.toggleClass('visible'); 
return false; 
});}); 
})(); 

的标记:

<a class="menu-link" href="#menu"><span class="arrow-down"></span><span>Menu</span></a> 
<nav role="navigation" id="menu" class=""> 
<ul class="menu"> 
<li>stuff</li> 
</ul> 
</nav> 

任何帮助将是非常非常感谢! :)

+0

虽然这不是问题的原因,但是当您选择元素时,如果您只希望得到一个结果,那么您应该使用一个id,如果您期望得到多于1个结果,则应该使用class并使用'.each()'方法遍历每个匹配的元素。 – 2013-03-07 11:07:31

回答

1

尝试

$menulink.find('span').toggleClass('active'); 

如果你只想先跨度然后

$menulink.find('span:first').toggleClass('active'); 

或想有arrow-down类跨越

$menulink.find('span.arrow-down').toggleClass('active'); 
+0

感谢堆!那一个工作! :) – Jess 2013-03-07 12:12:37

+0

@Jess总是欢迎兄弟。 – 2013-03-07 12:13:38

0
$menulink.children('span').toggleClass('whatever'); 

里面的点击功能。

或者,如果您只想定位arrow-down跨度

$menulink.children('span.arrow-down').toggleClass('whatever'); 
0

试试这个

$menulink.children(':first').toggleClass('active'); 

此发现的第一个孩子是<span>你的情况

0

使用将切换与页面上的所有该类元素的代码。试试这个:

$(document).ready(function() { 
    $('.menu-link').click(function() { 
     $(this).toggleClass('active'); 
     $(this).children('.arrow-down').toggleClass('visible'); 
     $('#menu').toggleClass('active'); 
    }); 
}); 
0

我猜想那是因为$menu-link是一个锚标记,浏览器导航离开该页面?

我不明白为什么任何上述答案将工作,如果你的不。

尝试设置一个jsfiddle?