2013-03-07 53 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?