对数据表

时间:2015-08-26 00:53:30

标签: jquery datatables

我有一个记录数量的表,其中一列有一个下拉列表。根据其中一列中的值,需要删除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,但无法更改它。它再次用于屏幕上显示的第一组记录,而不是隐藏的记录。你能告诉我我错过的东西吗?

1 个答案:

答案 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 ...