2013-05-01 85 views
2

我正在嘗試構建一個Jquery/CSS下拉菜單,到目前爲止事情一直很不錯。我對JQuery相當陌生,大部分時間都是這樣 - 但是,我無法弄清楚我在這裏做錯了什麼。點擊事件的JQuery addClass()

我試圖改變其中一個下拉選項卡的類,當它被點擊,但它似乎沒有按預期工作。

你可以看到代碼,我至今在這裏: http://jsfiddle.net/utdream/NZJXq/

我有「選擇」之類的樣子,我想怎麼上點擊一個按鈕,當按鈕的樣子,但我似乎無法使所以「選擇」類應用於點擊事件。從理論上講,這樣的:

<li id="menuProducts"><a href="#" class="hasmore">Products</a> 
    <div id="ProductsMenu"> 
     <ul> 
      <li><a href="#">Submenu Item</a></li> 
      <li><a href="#">Submenu Item</a></li> 
     </ul> 
    </div> 
</li> 

應該在單擊事件改變這個這個:

<li id="menuProducts"><a href="#" class="selected">Products</a> 
    <div id="ProductsMenu"> 
     <ul> 
      <li><a href="#">Submenu Item</a></li> 
      <li><a href="#">Submenu Item</a></li> 
     </ul> 
    </div> 
</li> 

這是我目前的jQuery(不工作):

jQuery(document).ready(function() { 
$('#menuProducts a:first').on('click', 
    function() { 
     $("a:first").removeClass("hasmore"); 
     $("a:first").addClass("selected"); 
     menuSubCloseAll.call(this, 'menuProducts'); 
     $('#menuProducts').find('li').slideToggle(200); 
    }); 
}); 

我我試着以許多不同的方式重寫這些代碼,並且我對於我可能做錯了什麼想法不知所措。

任何人在那裏有什麼指針我可以做什麼來解決這個問題?

預先感謝您!

+2

改變'$( 「答:首先」)'和'$(本)'。 – Omar 2013-05-01 00:21:51

+0

lol :: facepalm ::感謝奧馬爾。 – Jordan 2013-05-01 00:26:03

+0

評論比回答更快,也更安全;)歡迎好友 – Omar 2013-05-01 00:27:54

回答

2

做這樣的:

jQuery(document).ready(function() { 
$('#menuProducts a:first').on('click', 
    function() { 
     $(this).removeClass("hasmore"); 
     $(this).addClass("selected"); 
     menuSubCloseAll.call(this, 'menuProducts'); 
     $('#menuProducts').find('li').slideToggle(200); 
    }); 
}); 

你實際上是在你的頁面改變類第一<a>的,而不是<a>您單擊,您可以用$(this)直接訪問處理。

+0

謝謝尼爾森。吉茲。我不敢相信我錯過了! = P – Jordan 2013-05-01 00:33:26

0

您是否嘗試在通話中使用「this」?

$('#menuProducts a:first').on('click', 
     function() { 
      $(this).removeClass("hasmore"); 
      $(this).addClass("selected"); 
      menuSubCloseAll.call(this, 'menuProducts'); 
      $('#menuProducts').find('li').slideToggle(200); 
     }); 

它爲我