2012-10-30 121 views
1

我正在做一個超級下拉菜單,用戶點擊一個項目來顯示擴展。 我想兩個結果的onclick的項目:事件處理程序在jquery中發生事件之前觸發

  1. 擴展到顯示
  2. 背景顏色更改菜單項(被點擊的那個)

,但我有這很困難,並且這兩個結果都是在onclick事件發生之前發生的。

所有其他的事情都是到目前爲止好下面是我的代碼

//call the showMenu function to toggle menu items display 
showMenu("#market", "#marketDrop"); 
showMenu("#jobs", "#jobsDrop"); 
showMenu("#career", "#careerDrop"); 
showMenu("#tech", "#techDrop"); 
showMenu("#estate", "#estateDrop"); 
showMenu("#fair", "#fairDrop"); 
showMenu("#leisure", "#leisureDrop"); 
showMenu("#exclusive", "#exclusiveDrop"); 

//the showMenu function 
function showMenu(listItem, dropDown){ 
    //first hide the main drop down containers 
    $(dropDown).hide(); 
    $(listItem).click(function() { 
    $(dropDown).fadeToggle(); 
    }); 

    $(listItem).click().css("background-color", "#000");  
} 
+0

接受幫助你的答案,否則人們會停止回答你的問題 –

回答

3

你的最後一行是觸發點擊立即,不結合點擊處理程序。

試試這個:

function showMenu(listItem, dropDown){ 
    //first hide the main drop down containers 
    $(dropDown).hide(); 

    // register the click handler 
    $(listItem).click(function() { 
     $(dropDown).fadeToggle(); 
     $(this).css("background-color", "#000"); 
    }); 
} 

NB:現代jQuery使用.on('click', ...)而非.click(...)。它有助於避免與用於觸發和綁定處理程序的.click混淆,具體取決於參數列表。我還沒有修改過你的代碼,以防萬一你仍然使用jQuery的舊版本。

+0

感謝大的時間。我還有一個問題。我希望當我點擊遠離菜單項時,這兩個結果將被撤消: - 背景消失,並且下拉菜單崩潰。無論我點擊不同的菜單項,以前的效果是否撤消,或者當我點擊視圖端口的任何其他部分時。謝謝 – Wagaba

相關問題