我有一个记录数量的表,其中一列有一个下拉列表。根据其中一列中的值,需要删除select中的选项/值。我能够这样做,但更改将应用于屏幕上显示的第一组记录。表中其他页面中的其余记录不受影响。我最初使用以下语法来访问表数据
$('table tr').each(function(){...});
由于上面的代码没有获取隐藏的行,我使用fnGetNodes()
来访问所有行。以下是访问和修改内容的完整代码。
var rows=oTable.fnGetNodes();
for(var i=0;i<rows.length;i++){
var index=5;
var grade=$(rows[i]).find('td').eq(index).text();
var desc=$(rows[i]).find('td').eq(index+1).text();
console.log('Grade - '+grade);
console.log('Desc - '+desc);
index=13;
var selID=$(rows[i]).find('td').eq(index).find('select').attr('id');
if(grade.match('Used')){
$("select#"+selID).attr('disabled', true);
$("select#"+selID).css("background-color","#eeeeee");
}
else if(desc.match('ALT$') || desc.match('MTM$'))
{
$("#"+selID+" option[value='Option one']").remove();
}
}
我可以打印select元素的id,但无法更改它。它再次用于屏幕上显示的第一组记录,而不是隐藏的记录。你能告诉我我错过的东西吗?
答案 0 :(得分:1)
修改您的代码,如下所示:
// ... skipped ...
var $select = $(rows[i]).find('td').eq(index).find('select');
if(grade.match('Used')){
$select
.attr('disabled', true)
.css("background-color","#eeeeee");
}
else if(desc.match('ALT$') || desc.match('MTM$'))
{
$select.find("option[value='Option one']").remove();
}
// ... skipped ...