JQuery live или что-то подобное с .change()?


person Bob    schedule 27.08.2009    source источник


Ответы (5)


Примечание. jQuery 1.4 теперь поддерживает функцию live для всех обычных событий. До недавнего времени он не работал с IE8, но я думаю, что это исправлено в jQuery 1.4.2. См. этот разрешенный билет jQuery: IE8 НЕ ПОДДЕРЖИВАЕТ СОБЫТИЕ ИЗМЕНЕНИЯ ПРИ ИСПОЛЬЗОВАНИИ LIVE

person Gabe Hollombe    schedule 07.04.2010

плагин LiveQuery поддерживает все события.

person pestaa    schedule 05.10.2009

О, это было не так уж плохо, я просто обернул его в живое событие по клику, и оно сработало просто отлично.


$("#foo").live("click", function(){
  $('.fu').change(function(){
    blah blah blah
  });
});

person Bob    schedule 27.08.2009
comment
Вы, вероятно, обнаружите, что это имеет (нежелательный) эффект привязки и повторной привязки вашей функции изменения несколько раз... - person Funka; 28.08.2009
comment
хм, я не подумал об этом, но вы, очевидно, правы. Поскольку мне не понадобится, чтобы функция снова работала для щелкнутого/измененного элемента, будет ли приемлемым решением $(this).removeClass(fu) в конце моей функции изменения? - person Bob; 28.08.2009
comment
да, ответ на этот вопрос, очевидно, нет ... хммм, похоже, здесь должно быть творческое решение, которое не требует плагина, я буду думать об этом. - person Bob; 28.08.2009

Хорошо, после комментариев Funka о моей первой попытке ответить на мой собственный вопрос, теперь у меня есть это:


$('.foo').change(function test(){
  $(fu).prependTo("#some-div").bind("change", test)
  $(this).unbind("change",test)
};

Который будет привязывать функцию к каждому элементу по мере его создания и отвязывать его от созданного до него. Это решает мою проблему с пользовательским интерфейсом, но я новичок в obvs, поэтому я действительно открыт для обучения, если я снова что-то упустил! ;)

person Bob    schedule 28.08.2009

До того, как в jQuery 1.3 появился .live(), я имел большой успех с плагином «listen» Ариала Флеслера.

http://flesler.blogspot.com/search/label/jQuery.Listen

Я считаю, что вы сможете сделать это в событии изменения с помощью этого плагина.

person Funka    schedule 27.08.2009