2015-01-21 119 views
-1

我想使用jQuery將事件處理程序綁定到多個元素(包含元素self.el)。jquery將事件處理程序綁定到包含元素的多個元素

下面的代碼是否正確?

$("input, textarea, select").add(self.el).on(...) 

投入,文字區域,包含self.el(這並不多大意義)選擇處理事件:上輸入,文字區域,選擇並self.el

$("input", "textarea", "select", self.el).on("keyup", function(e) { 
        if($.keys[e.keyCode] != "TAB") { 
         self.callChangeAction(e); 
        } 
       }) 
+1

'下面的代碼是否正確?'爲什麼不測試它? – 2015-01-21 12:03:10

+0

是否要處理(輸入,textareas,選擇和self.el)或(輸入,textareas,選擇INSIDE self.el)的事件。你的問題很混亂! – 2015-01-21 12:07:11

+0

我想處理所有輸入,textareas,選擇事件(所有這些都有父self.el) – testndtv 2015-01-21 12:35:50

回答

0

處理事件

:上輸入,文字區域,選擇是在開始INSIDE self.el
$("input, textarea, select").has(self.el).on(...) 

處理事件對任何輸入,文字區域,選擇個

處理事件,這將是在的時間內self.el的事件觸發:

$(self.el).on(events, "input, textarea, select", ...) 
1
$(self.el).on("keyup", "input, textarea, select", function(e) { 
    if ($.keys[e.keyCode] != "TAB") { 
     self.callChangeAction(e); 
    } 
}) 
0

如果您希望將事件處理程序綁定到所有的元素單獨然後,而不是選擇的列表,你應該用一個逗號分隔的選擇:

$('select,input,textarea', self.el).on(...) 

這本身只是一個短手.find

$(self.el).find('select,input,textarea').on(...) 

或者,假設你想趕上事件是一個「冒泡」,你可以使用事件委託,從而父元素捕捉代表所有的孩子的情況下,然後jQuery檢查事件發生的實際元素,看看它是否是你想要的:

$(self.el).on('keyup', 'select,input,textarea', ...); 
相關問題