2011-04-15 19 views
4

就像爲我的應用程序中的模塊創建名稱空間/子模塊一樣?就像說我只想把某些任務委託給某個div中的元素,比如說#submodule1。是否有可能在jQuery中的委託函數中添加多個選擇器?

我可以做這樣的事情:

$("#submodule1") 
    .delegate(".selector1", "click", function() {}) 
    .delegate(".selector2", "click", function() {}) 

而且如果可能的話,這將是一樣的:

$("#submodule1").delegate(".selector1", "click", function() {}) 
$("#submodule1").delegate(".selector2", "click", function() {}) 

編輯

基於T.J.克羅德的答案我應該能夠做到這一點:

$("#soap-test-test-cases") 
    .delegate(".soap-test-case", "click", function(){ 
     testfunction(); 
    }); 
    .delegate("legend", "click", function() { 
    alert("this is a test!"); 
    }); 

,但我得到一個語法錯誤

+0

語法錯誤:在第一個'});'結束後刪除分號。 – 2011-04-15 06:27:11

回答

15

編輯

你的編輯更改的問題,現在你有一個語法錯誤:

$("#soap-test-test-cases") 
    .delegate(".soap-test-case", "click", function(){ 
     testfunction(); 
    }); 
// v--- here 
    .delegate("legend", "click", function() { 
    alert("this is a test!"); 
    }); 

如果你刪除它前面的分號,你很好:

$("#soap-test-test-cases") 
    .delegate(".soap-test-case", "click", function(){ 
     testfunction(); 
    }) // <== No semi here, we're not done with the statement yet 
    .delegate("legend", "click", function() { 
    alert("this is a test!"); 
    }); // <== Now we're done with the statement 

這就是一條語句分散在多行,這很好。您要求$(),然後在$()返回的對象上調用delegate,然後在第一次調用delegate時返回的對象上調用delegate

隨着第一delegate呼叫分號後,你有語句,並用.(這是一個語法錯誤)的第二個開始。

JavaScript大多不關注換行符,它關心語句,它們以分號結尾。它具有的恐怖是自動分號插入,但它不會插入使代碼無效的分號。 (這插入分號,使你的代碼胡作非爲,不過,如此反覆,知道您的語句開始和結束,並確保你提供了正確的分號。)


原來的答覆

您給出的代碼示例都是有效的,並且它們具有相同的效果:連接兩個單獨的函數以處理點擊,其中一個函數處理一個元素子集(.selector1),另一個處理另一個.selector2)。你的第一個例子只是標準的鏈接。

我不認爲是你問什麼,但以防萬一:如果你想使用相同功能元素的兩個類,你能做到這一點,太:

$("#submodule1").delegate(".selector1, .selector2", "click", function() { }); 

...或(當然)使用與兩個單獨的delegate調用相同的命名函數。

+0

哇,所以有一個$(「#submodule1」),$(「#submodule2」)的頁面和其中的很多代表是「接受」更好的做法? – corroded 2011-04-15 06:14:52

+0

嗯我試過第一個,但它不適合我。不會換行破解代碼?將編輯問題顯示代碼 – corroded 2011-04-15 06:16:35

+0

@corroded:我沒有說這是最好的做法,我說你可以做到。 :-)但是,如果你有一個頁面有一個你想要處理點擊任何元素的定義區域,那就是'delegate'的意思。 – 2011-04-15 06:17:53

相關問題