2014-04-11 48 views
1

我需要做出反應以點擊動態創建元素的事件。有沒有一種優雅的方式來組合這些功能,我只需要一次點擊就可以在主體中點擊一下?一些元素有幾個類。jQuery - 如何結合多個點擊操作

HTML

<div class="dropDown blueBG"></div> 

JS

 $("body").on('click', '.dropDown', function(e){ 
      ....... 
     }); 

     $("body").on('click', '.aButton', function(e){ 
      ....... 
     }); 

     $("body").on('click', '.aForm', function(e){ 
      ....... 
     }); 
+4

你婉做同樣的事情對所有的元素,或者不同的元素不同的東西嗎? –

+0

@ T.J.Crowder我需要爲每個元素提供不同的功能。所以你會保持它原樣? – user1477955

+0

@ user:是的,如果處理程序做了不同的事情,沒有理由將它們組合起來。如果他們有*部分*的共同點,將它們分成不同的小函數,每個小函數都會調用它們(所以你不會複製代碼)。 –

回答

3

嘗試使用multiple selector

的所有元素相同的功能:

$("body").on('click', '.dropDown,.aButton,.aForm', function(e){ 
}); 

不同的不同元素的功能:

$("body").on('click', '.dropDown,.aButton,.aForm', function(e){ 

    if  ($(this).is('.dropDown')) { } 
    else if ($(this).is('.aButton')) { } 
    else        { } 

}); 
+0

當然,做第二件事根本沒有什麼好的理由。獨立的處理程序是正確的方法。 –

+0

@ T.J.Crowder我剛剛在我的一些項目中使用了第二個項目,以改善代碼優雅並最大限度地減少代碼重複的影響。我會以正確的方式或笏..? –

+0

@拉傑:不可能說沒有看到的具體情況,但我可能會傾向於單獨的處理程序。如果他們有共同的東西,那麼他們會調用更小的函數。在第二個代碼塊中,你正在做的(邏輯上而言,不是字面意思)是要求jQuery將這些類組合起來,以便可以再次將它們分開。所以最重要的是,你最終會重複選擇器。 –

3

用逗號將它們分開結合他們的選擇:

$("body").on('click', '.dropDown, .aButton, .aForm', function(e){ 

}); 

如果你想找出被點擊,您可以使用$(this).is('.dropDown')$(this).hasClass('.dropDown')

1

創建一個新的類,它是常見的,你想與處理click事件的元素:

HTML:

<div class="dropDown blueBG clickable"></div> 

JS:附加事件

$("body").on('click', '.clickable', function(e) { 
     ....... 
    }); 
-1

關於動態創建的元素(通過Java腳本創建標籤)突然響應。 因此,對於確定的結果訪問動態創建的標籤的父元素並調用on(「Event」)函數。

Belowmentioned是示例代碼: 「newele1,newele2」 -----

$( 「母公司 」)上(「 點擊」,函數(){ ---- -content ------------- });

如需清晰圖片,請參閱此js小提琴示例。

//jsfiddle.net/5SyS3/6/

+2

他們已經這麼做了...... – happyjack