2016-09-19 102 views
0

在我目前的項目我有多個行是這樣的:.on()from for循環?

$$(document).on('change','#x1', function() { 
    console.log('fired'); 
}); 
$$(document).on('change','#x2', function() { 
    console.log('fired'); 
}); 
$$(document).on('change','#x3', function() { 
    console.log('fired'); 
}); 

是有可能的一些for循環來替代呢? (我的例子不工作)

for (var i = 1; i < 4; i++) { 
    $$(document).on('change','#x'+i, function() { 
    }); 
} 
+1

我在這裏看不到任何Ajax ... –

回答

6

無需環路使用comma separated multiple selectors的。

$$(document).on('change','#x1,#x2,#x3', function() { 
    console.log('fired'); 
}); 


FYI:始終這是更好地使用通用類元素的組,並使用類名附加事件處理程序。


如果有n個選擇器,則可以使用for循環生成選擇器。

var sel = ''; 
for (var i = 1; i < 4; i++) { 
    sel += (i > 1? ',' : '') + '#x' + i; 
} 

ES6替代

var sel = Array.from({ length:3 },(_, i) => '#x' + (i + 1)).join(','); 

的另一種辦法是attribute start with selector但它會選擇所有元素,其中它的id是先從x

$$(document).on('change','[id^="x"]', function() { 
    console.log('fired'); 
}); 
+0

謝謝!也可以使用n #x創建此事件? – t333o

+0

@ t333o:使用循環生成選擇器 –

+0

@ t333o:es6方法Array.from({length:3},( _,i)=>'#x'+(i + 1))。join ',');' –