Я использую datatable, где после нажатия строки страница перезагружается с дополнительными параметрами сообщения. Я пытаюсь добиться того, что после перезагрузки страницы выделенная строка снова подсвечивается.
Отрывки:
Jquery:
gTable = $('#goals').dataTable( {
"bProcessing": true,
"bServerSide": true,
"bLengthChange": false,
"iDisplayLength":10,
"sAjaxSource": "json_goals.php",
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumns" : [ null,null,null],
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push( { "name": "missionId", "value": <?php echo $id; ?> } );
$.ajax( {
"dataType": 'json',
"type": "GET",
"url": sSource,
"cache": false,
"data": aoData,
"success": fnCallback
} );
},
"fnRowCallback": function( nRow, aData, iDisplayIndex ) {
if ( aData[0] == <?PHP echo $goalid; ?> ) { $('tr', nRow).addClass('highlight');} // this succeeds, tested with alert.
return nRow;
}
});
CSS:
tr.highlight td{font-weight: bold;background-color: Yellow;}
HTML:
<table id="goals" class="display"><col style="width: 10%"/><col style="width: 20%"/><col style="width: 70%"/>
<thead><tr>
<th>goalId</th>
<th>Goal Type</th>
<th>Display Text</th>
</tr></thead><tbody><tr><td colspan="3">Loading....</td></tr></tbody>
</table>
Обновить:
$("#goals tbody tr").live('click',function(event) { $(gTable.fnSettings().aoData).each(function(){ $(this.nTr).removeClass('row_selected');}); $(event.target.parentNode).addClass('row_selected'); var aData = gTable.fnGetData(this); window.location.replace("missions.php?goalid=" + aData[0] + "&id=" + <?PHP echo $id;?> + "#tabs-5");});
Все работает отлично, за исключением того, что строка не подсвечивается. Любые идеи о том, как подойти к этому? Благодарю.
Кажется, что ваш селектор jQuery $() не получает дескриптор требуемого элемента. Попробуйте использовать $('#goals tr').eq(nRow).addClass('highlight');
См. Это сообщение для получения дополнительной информации