Полагаю, ваш вопрос продолжается ваш предыдущий вопрос о цвете некоторых ячеек. Я создал еще одну демонстрацию , код которой длиннее моего предыдущего примера из моего ответа на ваш предыдущий вопрос.
Основная проблема с настройкой цвета ячейки (<td>
элемент) состоит в том, что класс ячейки, конечно, имеет более высокий приоритет, чем классы строки, потому что по определению классов строки не было! "атрибут используется. Таким образом, чтобы сделать выбранную ячейку зависания точно такой же, как другие стандартные ячейки, необходимо удалить класс ячейки, который меняет свой цвет. После «отмены выбора» или «отмены отображения» соответствующей строки необходимо восстановить удаленный класс ячейки (классы «ui-state-error ui-state-error-text»). Я реализовал это поведение с помощью следующего кода:
var grid = $("#list");
var saveErrorStateInData = function(ptr) {
var redCells = $("td.ui-state-error",ptr);
if (redCells.length > 0) {
var errorCells=[];
$.each(redCells,function(index, value) {
errorCells.push(value);
$(value).removeClass("ui-state-error ui-state-error-text");
});
$(ptr).data('errorCells',errorCells);
}
};
var restoreErrorStateFromData = function(ptr) {
var errorCells = $(ptr).data('errorCells');
if (errorCells && typeof errorCells.length !== "undefined"
&& errorCells.length>0) {
$.each(errorCells,function(index, value) {
$(value).addClass("ui-state-error ui-state-error-text");
});
}
};
grid.jqGrid({
// all jqGrid parameters
beforeSelectRow: function(rowid, e) {
var selrowid = $(this).getGridParam('selrow');
restoreErrorStateFromData($("#"+selrowid)[0]);
ptr = $(e.target).closest("tr.jqgrow");
saveErrorStateInData(ptr);
return true;
}
}).bind('mouseover',function(e) {
var ptr = $(e.target).closest("tr.jqgrow");
if($(ptr).attr("class") !== "subgrid") {
$(ptr).addClass("ui-state-hover");
saveErrorStateInData(ptr);
}
return false;
}).bind('mouseout',function(e) {
var ptr = $(e.target).closest("tr.jqgrow");
var selrowid = grid.getGridParam('selrow');
$(ptr).removeClass("ui-state-hover");
if (ptr.length === 1 && ptr[0].id !== selrowid) {
restoreErrorStateFromData(ptr);
}
return false;
});
На демоверсии вы увидите, как все это работает.