2013-09-30 2 views
0

Моя страница имеет много строк, и каждая строка имеет элемент выбора, как показано.как перебирать элемент 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. Если вы хотите манипулировать им с помощью API jQuery, его необходимо снова обернуть внутри $(...).

Try замена:

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

Смежные вопросы