Событие выпадающего пользовательского интерфейса jQuery не запускается

При «над» я перестраиваю удаляемые элементы с помощью $(this).parent.empty().append(...) (они в основном состоят из <li> элементов)

Проблема в том, что фактический элемент, ожидающий срабатывания функции "out", также удаляется --> out не может быть запущен.

есть ли решение такой проблемы?


person Peter    schedule 18.08.2011    source источник


Ответы (1)


Вы пробовали .live. Это добавит его обратно, если вы создадите элементы после того, как DOM уже загружен. Итак, если у вас есть что-то вроде $("#mylist li").live('handler', function(){}); Я не уверен, что именно вы делаете, но это будет что-то вроде этого.

Несколько примеров можно увидеть здесь: http://api.jquery.com/live/

А в морду можно сделать несколько обработчиков.

$("#mylist li").live("mouseover mouseout", function(event) {
  if ( event.type == "mouseover" ) {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

Делегат, как предложил Хаски:

$("#mylist").delegate("li", "mouseover mouseout", function(event) {
  if ( event.type == "mouseover" ) {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});
person Matt    schedule 18.08.2011
comment
Вам следует избегать использования live, это очень ресурсоемко. Вместо live попробуйте delegate, который можно привязать к элементу, который будет получать всплывающие события. - person Husky; 18.08.2011
comment
@Husky Я раньше не использовал делегата, поэтому не хотел указывать неправильный код, но вы правы. Он выглядит более эффективным, поскольку не выполняет поиск по всему DOM. Я обновил свой ответ, дайте мне знать, если это неправильно. Спасибо! - person Matt; 18.08.2011