我有类似的问题:Combine 3 functions into one in javascript
我有功能:
test: function() {
for (var i = 0; i < settings.columns.test.length; i++) {
$table.find('tbody td.test').each(function() {
$.each(jQuery.parseJSON(settings.columns.test[i][1]), function(index, value) {
if ($(this).text() === value) {
input += '<option value="' + index + '" selected>' + value + '</option>';
} else {
input += '<option value="' + index + '">' + value + '</option>';
}
//more code...
});
});
}
},
test2: function() {
for (var i = 0; i < settings.columns.test2.length; i++) {
$table.find('tbody td.test2').each(function() {
$.each(jQuery.parseJSON(settings.columns.test2[i][1]), function(index, value) {
if ($(this).text() === value) {
input += '<option value="' + index + '" selected>' + value + '</option>';
} else {
input += '<option value="' + index + '">' + value + '</option>';
}
//more code...
});
});
}
},
我通过以下方式调用这些函数:
columns: {
test1: [["key", '{"0": "First value", "1": "Second Value"}']],
test2: [["key", '{"0": "One more value", "1": "One more more value"}']]
}
如您所见,这两个功能相同,只有test
- &gt; test2
..是否可以创建一个函数并使用其他值来选择它?提前致谢
答案 0 :(得分:3)
在您的测试function中使用参数,然后将test
的所有实例替换为该参数(当作为属性访问时,例如columns.test
,使用bracket notation进行评估而是参数)
test: function(selectorValues) {
for (var i = 0; i < settings.columns[selectorValues].length; i++) {
$table.find('tbody td' + selectorValues).each(function() {
$.each(jQuery.parseJSON(settings.columns[selectorValues][i][1]), function(index, value) {
if ($(this).text() === value) {
input += '<option value="' + index + '" selected>' + value + '</option>';
} else {
input += '<option value="' + index + '">' + value + '</option>';
}
//more code...
});
});
}
},
//invoke using the objects you created (or pass values directly)
test(columns.test1)