JQuery на не работает, но жить делает с использованием библиотеки 1.7.1 - PullRequest
10 голосов
/ 28 декабря 2011

У меня есть кнопка, которая создается динамически, поэтому мне нужно использовать .live в моем коде.Вот пример:

$('#send').live('click', function(){
.....
..... code .....
.....
});

Я использую библиотеку jQuery 1.7.1, и я хотел изменить ее на использование .on, но это не работает.Почему это?Синтаксис отличается?

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

http://api.jquery.com/on/

Ответы [ 2 ]

19 голосов
/ 28 декабря 2011

Синтаксис отличается? Да. Вы прочитали всю страницу документа .on(), на которую ссылались?

Следующая сводка о том, как переключиться с .live() на .delegate() или .on(), содержится на странице .live() doco :

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+

Итак, в вашем случае вы хотите:

$(document).on('click', '#send', function(){
   // your code here
});

Обратите внимание, что в идеале вы не будете использовать $(document), вы будете использовать $(someotherelement), чтобы прикрепить обработчик к элементу ближе к вашему элементу #send. Если вы можете, используйте любой прямой родительский элемент '#send' или если родительский объект создается динамически, используйте его родительский.

6 голосов
/ 28 декабря 2011

Чтобы использовать делегирование события, .on требуется два селектора, например .delegate.

$('some container').on('click', '#send', function() { ... });
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...