2015-09-23 49 views
1

選擇我有選擇的數組工作:綁定事件在陣列

var selectors = ['#first_name', '#last_name']; 

我希望能夠將事件綁定,如focuschangekeyup,等到陣列中的每個選擇。選擇器被附加以形成輸入。

對於綁定每個選擇器我有以下代碼。

for(var selector in selectors){ 
    $('#form').find(selectors[selector]).on('change keyup click select focus', function(){ 
    console.log(selectors[selector]); //this is here for testing 
    }); 
} 

這按理應該工作,但是當我看到控制檯登錄它顯示#last_name兩次。

我一遍又一遍地檢查了表格,它與表格無關。我的代碼中唯一的問題是我提供的這個單一的邏輯結構。如果我在循環之前控制檯登錄數組,它顯示數組爲['#first_name', '#last_name'],所以這就是爲什麼我很困惑。

+2

FWIW,你可以用逗號作爲分隔符將選擇器加入到單個字符串中。 –

回答

1

您可以使用逗號分隔的選擇器,不需要循環。在控制檯中觸發兩次的原因是由於同時觸發多個對象,當您單擊一個新輸入時,它將同時觸發單擊和焦點事件。

$('#form').find(selectors.join()).on('change keyup click select focus', function(){ 
    console.log(this); //this is here for testing 
}); 
+0

所以for循環甚至不需要那麼就是你所說的 –

+0

@MarkHill:那沒有必要那 –

+0

以及我只是試過你的解決方案,它的工作完美,給我一點點,我會接受爲答案。謝謝你的快速解決方案! –