Я предлагаю использовать mouseover и mouseleave (или событие jQuery.hover , которое совпадает), чтобы установить класс ui-state-hover
для строка, в которой будет открыто контекстное меню. В способе вы можете исправить поведение из стандартного
к следующему:
Демо демонстрирует мое предложение в прямом эфире. Соответствующий код я включил ниже:
$grid.contextMenu('myMenu1', {
bindings: {
edit: function (trigger, currentTarget) {
$(trigger).jqGrid('editRow',
$(currentTarget).closest("tr.jqgrow").attr('id'),
true);
},
del: function (trigger, currentTarget) {
$(trigger).jqGrid('delGridRow',
$(currentTarget).closest("tr.jqgrow").attr('id'));
}
},
menuStyle: {
backgroundColor: '#fcfdfd',
border: '1px solid #a6c9e2',
maxWidth: '600px',
width: '100%'
},
itemHoverStyle: {
border: '1px solid #79b7e7',
color: '#1d5987',
backgroundColor: '#d0e5f5'
},
onShowMenu: function (e, $menu) {
var $row = $(e.target).closest('tr.jqgrow');
$menu.mouseover(function () {
try {
$row.siblings().removeClass('ui-state-hover');
} catch (e) {}
$row.addClass('ui-state-hover');
}).mouseleave(function (e) {
var $rowNew = $(e.target).closest('tr.jqgrow');
if ($rowNew.attr('id') !== $row.attr('id')) {
$row.removeClass('ui-state-hover');
}
});
return $menu;
}
});