如何遍历每行中的select元素进行条件检查

时间:2013-09-30 07:35:03

标签: jquery

我的页面有很多行,每行都有一个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>');
        });
    }

如何有条件地为每个选择项添加选项。

1 个答案:

答案 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>');