JQuery не видит новые элементы - PullRequest
17 голосов
/ 02 мая 2009

Я новичок в JQuery, так что терпите меня :).

У меня есть простая проблема:

$(document).ready(function() {

     $("#instrument").change(function() {
         $("#tunings").html("<select id=\"TuningSelector>\"[..]</div>");
     });

     $("#TuningSelector").change(function() {
         DoSomethingWithTheValue();
      }); 

 });

Проблема в том, что при смене инструмента скрипт больше не реагирует на изменения TuningSelector. Как будто JQuery не видит новый элемент TuningSelector ...

Нужно ли вызывать обновление в JQuery или около того? Чтобы он видел обновленный DOM?

Ответы [ 2 ]

36 голосов
/ 02 мая 2009

Обычно вы хотите использовать для , чтобы он применял обработчик к новым элементам, соответствующим селектору, и делегировал более высокий элемент в DOM.

$('body').on( 'change', '#control', function() {
    DoSomething();
});
2 голосов
/ 02 мая 2009

С событиями jQuery, если вы хотите, чтобы событие применялось к новым элементам, вы бы использовали метод .live , однако jQuery 1.3 не поддерживает размытие, фокус, указатель мыши, отпускание мыши, изменение, отправку событий как живые события. (изменение, отправка и размытие / фокус находятся на дорожной карте для jQuery 1.4)

В качестве альтернативы вы можете использовать плагин liveQuery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...