jquery mouseenter mouseleave с таблицами данных, не работает в Chrome или IE - PullRequest
3 голосов
/ 14 декабря 2011

Я использую плагин datatables для отображения таблицы. В параметрах конфигурации я установил bJQueryUI : true, чтобы в таблице применялся стиль текущего стиля пользовательского интерфейса jQuery, с которым я работаю. В последнем столбце я добавил несколько значков для выполнения действий над строкой. Дело в том, что событие наведения над значками и заголовками таблицы данных работает только в Firefox, в Chrome или IE событие не вызывается.

код, который я использую, это:

$('.ui-state-default').live({ 
    mouseenter:
         function(){ $(this).addClass('ui-state-hover'); },
    mouseleave:
         function(){ $(this).removeClass('ui-state-hover'); }
});

1 Ответ

2 голосов
/ 14 декабря 2011

Вы проверили в своих инструментах разработчика наложение элементов в области, которую вы хотите навести?Вы должны проверить z-index элементов, чтобы убедиться, что элементы .ui-state-default находятся сверху.

Также вы должны заменить .live() на .delegate().Они похожи, но вы можете установить корневой элемент с помощью .delegate(), а с .live() корневым элементом всегда будет элемент document:

$(<root element>).delegate('.ui-state-default', 'mouseenter', function () {...}).delegate('.ui-state-default', 'mouseleave', function () {...});

.live() устарело с jQuery 1.7.В jQuery 1.7 появилась новая функция с именем .on(), и она делает то же самое, что и .bind() и .delegate(), в зависимости от используемого синтаксиса: http://api.jquery.com/on

...