我的页面有很多行,每行都有一个select元素,如图所示。
<tr><td>row1</td><td><select name='action_select1'></td></tr>
<tr><td>row1</td><td><select name='action_select1'></td></tr>
<tr><td>row1</td><td><select name='action_select1'></td></tr>
<tr><td>row1</td><td><select name='action_select1'></td></tr>
...
现在我必须有条件地为每个选择项附加选项值,但是当我迭代它时,抛出错误不能在对象上追加元素。
var algSelect=grid.find('select[name=action_col1]');
var array_sort = [{ name:'None', value:'none'},{name:'Source', value:'source'},{name:'Calculations', value:'calc'}];
var temp_obj=[];
for(var k; k<=algSelect.length;k++){
temp_obj=algSelect[k];
_.each(array_sort, function(gen) {
if(some_cond_here)
temp_obj.append('<option value="' + gen.value +'" title="'+gen.name+'">' + gen.name + '</option>');
});
}
如何有条件地为每个选择项添加选项。
答案 0 :(得分:1)
$('select[name="action_col1"]')
将返回一个jQuery对象 - 它包含jQuery的所有方法:.append()
,.css()
,.val()
......
algSelect[k]
将返回一个裸DOM节点。如果你想使用jQuery的API来操作它,你需要在$(...)
内再次包装它。
尝试更换:
temp_obj.append ...
with:
$(temp_obj).append
实际上,.append
也适用于节点集合。如果你能分辨出你的条件:
var algSelect=grid.find('select[name=action_col1]');
var filtered = algSelect.filter(function(){ return some_cond_there; });
filtered.append('<option>'...'</option>');