在我目前的项目中,我有这样的多行:
$$(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 () {
});
}
答案 0 :(得分:6)
不需要循环使用comma separated multiple selectors。
$$(document).on('change','#x1,#x2,#x3', function () {
console.log('fired');
});
<小时/> 仅供参考:使用公共类来组合元素并使用类名附加事件处理程序总是更好。
如果有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');
});