Попробуйте этот подход:
$(".nav").delegate("li", "hover", function () {
$(this).toggleClass("hover");
});
Это зависит от того, не будет ли .nav
заменен через AJAX или иным образом, поскольку именно там находится обработчик событий.Если он заменяется, вы должны прикрепить делегата к более высокому предку, который не заменяется.
Также незначительное исправление, $(".nav li").hover(function () {
не использует метод .live()
, это будет: $(".nav li").live('hover', function () {
..hover()
привязывает событие непосредственно к элементу, когда этот код выполняется ... любые будущие элементы не будут вызывать этот код при наведении, вот где .live()
и .delegate()
отличаются, они работают с будущими элементами через всплывающее окно.