2011-03-12 66 views
6

基本上我有很多CSS div,我需要編寫onclick函數,我想寫一次Click函數,並且我想告訴函數,如果它是元素a做1,如果它是元素b做2.如何在同一時間爲多個元素定義點擊處理函數

我可以知道如何在jQuery中編寫函數嗎?

$('.gil_Ads_BlankDock1').click(function(){ 

     $('#gDescZone1').hide(); 
     $('#gDescZone2').hide(); 
     $('#descAd1').hide(); 
     $('#descAd2').hide(); 
     $('#descAd3').hide(); 
     $('#descAd4').hide();   
     $('#header').hide(); 
     $('#contentArea').hide(); 
     $('#marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

$('.gil_Ads_BlankDock2').click(function(){ 

     $('#gDescZone1').hide(); 
     $('#gDescZone2').hide(); 
     $('#descAd1').hide(); 
     $('#descAd2').hide(); 
     $('#descAd3').hide(); 
     $('#descAd4').hide();   
     $('#header').hide(); 
     $('#contentArea').hide(); 
     $('#marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

$('.gil_Ads_BlankDock3').click(function(){ 

     $('#gDescZone1').hide(); 
     $('#gDescZone2').hide(); 
     $('#descAd1').hide(); 
     $('#descAd2').hide(); 
     $('#descAd3').hide(); 
     $('#descAd4').hide();   
     $('#header').hide(); 
     $('#contentArea').hide(); 
     $('#marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

以上給出的代碼是我的幾個點擊功能,我想寫在剪切。

+0

你從來沒有在一個CSS選擇器之前使用逗號? – BoltClock 2011-03-12 05:54:31

回答

3

+1以上所有答案。您也可以保持所有選擇的數組躲,如果你不能重寫代碼:

var mult = ['#gDescZone1','#gDescZone2','#descAd1','#descAd2', 
       '#descAd3','#descAd4','#header','#contentArea',"#marquee']; 
$.each(mult,function(index,value){ 
    $(value).hide(); 
}); 
3
$('.gil_Ads_BlankDock1, .gil_Ads_BlankDock2, .gil_Ads_BlankDock3').click(function(){ 

     $('#gDescZone1, #gDescZone2, #descAd1, #descAd2, #descAd3, #descAd4, #header, #contentArea, #marquee').hide(); 
     $('#BottomDock').fadeIn(); 
}); 

少寫,多做:)

現在,如果你只是有辦法少寫標記......

+0

謝謝...基本上我的divs被放置在不同的尺寸,所以我使用多個碼頭,並在每個碼頭我需要顯示不同的數據..感謝任何方式...並且我需要引用特定的項目單擊其他語句作爲e.target .... – 2011-03-12 05:59:22

+0

或以其他方式...? – 2011-03-12 06:01:57

+0

我不知道我理解你的問題......但是,你可以使用** event.target **來告訴哪些項目被點擊,只需將** function()**改爲** function(event )**。 – harpo 2011-03-12 06:08:37

6
$('.gil_Ads_BlankDock1, .gil_Ads_BlankDock2, .gil_Ads_BlankDock3').click(function(){ 

     $('#gDescZone1').hide(); 
     $('#gDescZone2').hide(); 
     $('#descAd1').hide(); 
     $('#descAd2').hide(); 
     $('#descAd3').hide(); 
     $('#descAd4').hide();   
     $('#header').hide(); 
     $('#contentArea').hide(); 
     $('#marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

或者,如果你有機會來重構您的標記,你可以給你的容器的同一類,說「廣告」:

$('.ads').click(function(){ 

     $('#gDescZone1').hide(); 
     $('#gDescZone2').hide(); 
     $('#descAd1').hide(); 
     $('#descAd2').hide(); 
     $('#descAd3').hide(); 
     $('#descAd4').hide();   
     $('#header').hide(); 
     $('#contentArea').hide(); 
     $('#marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

您也可以組你的隱藏操作:

$('.ads').click(function(){ 
     $('#gDescZone1, #gDescZone2, #descAd1, #descAd2, #descAd3, \ 
      #descAd4, #header, #contentArea, #marquee').hide();   
     $('#BottomDock').fadeIn(); 
}); 

Morover,你可以給你隱藏了同一個班級,說「可隱藏」的元素:

$('.ads').click(function(){ 
     $('.hideable').hide();   
     $('#BottomDock').fadeIn(); 
}); 

最後一種形式是做正確的方法,如果你有機會將這些額外的類添加到您的標記。

+0

現在我可以知道如何引用一個特定的物品,如果其他語句 – 2011-03-12 06:05:28

+0

'this'會給你點擊的DOM元素。 '$(this)'把它包裝在一個jQuery對象中。然後你可以用$(this).attr(「some-attribute」)來訪問元素的屬性。 'this.id'給你的元素ID。所有這些都是基本的東西,我們鼓勵您閱讀。如果我是你,我會花一些時間在線瀏覽jQuery文檔。 – 2011-03-12 20:44:24

相關問題