2013-09-30 45 views
0

我的頁面有很多行,每一行都有一個select元素,如圖所示。如何迭代每行中的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

$('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>'); 
+0

當然它的工作!! ...謝謝..通過這種方式,你可以告訴我的不同... ... – GustyWind

相關問題