2010-07-26 3 views
2

Недавно я преобразовал свой код для получения динамически сгенерированных результатов. Приведенный ниже код работал нормально, чтобы переключить класс control_hover.jQuery .live() question

Предыдущий код

$(".control").hover(function() {$(this).addClass("control_hover");},function() {$(this).removeClass("control_hover");}); 

Однако теперь с живым кодом, это не похоже, чтобы выполнить часть removeClass.

Новый код

$(".control").live('hover',function() {$(this).addClass("control_hover");},function() {$(this).removeClass("control_hover");}); 

я явно делаю что-то неправильно. Любая помощь будет оценена по достоинству.

ответ

3

При использовании .live() с hover он не выполняет 2 функции. Вам нужно отправить одну функцию, которая проверяет, какое событие было запущено.

Попробуйте:http://jsfiddle.net/RpV6y/

$(".control").live('hover',function (evt) { 
     if(evt.type == 'mouseover') { 
      $(this).addClass("control_hover"); 
     } else { 
      $(this).removeClass("control_hover"); 
     } 
}); 

Другим вариантом было бы использовать toggleClass. Он по-прежнему будет срабатывать для обоих событий.

Попробуйте:http://jsfiddle.net/RpV6y/1/

$(".control").live('hover',function (evt) { 
    $(this).toggleClass("control_hover"); 
}); 
+0

Спасибо, имеет смысл сейчас. Примите ответ, как только стек позволит мне. – st4ck0v3rfl0w

+0

@ st4ck0v3rfl0w - Добро пожаловать. : o) И FYI вам нужно jQuery 1.4.1 или новее использовать 'hover' с' .live() '. – user113716

4

Живая может принимать только один обработчик. Попробуйте:

$(".control").live('mouseenter', enterhandler).live('mouseleave',leavehandler); 

http://api.jquery.com/live/ см предостережений раздел