0

我的页面有很多行,每行都有一个选择元素,如图所示。

<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>');
        });
    }

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

4

1 回答 1

1

$('select[name="action_col1"]')将返回一个 jQuery 对象 - 它具有 jQuery 的所有方法:.append(), .css(), .val()...

algSelect[k]另一方面,将返回一个裸露的 DOM 节点。如果你想使用 jQuery 的 API 来操作它,你需要将它再次包装在一个$(...).

尝试更换:

temp_obj.append ...

和 :

$(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>');
于 2013-09-30T07:39:48.477 回答