Я написал плагин jQuery, который связывает 8 элементов на странице, и я хотел использовать .live() для привязки действия click к ссылке в каждом элементе. Когда вы нажимаете ссылку, она должна отправить форму с помощью ajax. Проблема в том, что все ссылки для всех 8 элементов представляют форму для первого элемента на странице. Когда я использую .click(), все работает правильно. Я бы предпочел использовать .live(), так как у меня будет добавлено больше элементов динамически.jQuery .live ('click') только привязка к первому элементу на странице
Вот код, аналогичный тому, что я делаю:
var $container = $(this);
var $form = $container.find('form.some_form');
var $button = $container.find('a.some_link');
Это будет только отправить форму для первого элемента:
$button
.live('click', function() {
// some code that submits $form via ajax
});
Однако это всегда представляет правильную форму:
$button
.click(function() {
// identical code that submits $form via ajax
});
Есть ли что-то о .live(), которое я должен знать? Тупик.
Это объясняет странное поведение :) В этом случае я не вижу никакого приятного способа использования .live() для замены .click() ... думаю, я просто обновляю свой плагин после вставки новых элементов в DOM, конечно, не конец света. – a10s
Вы должны иметь возможность построить селектор, объединив идентификатор контейнера (при условии, что он есть) с нужным элементом/классом. Например, если в вашем контейнере есть идентификатор «myDiv», вы можете сделать $ («# myDiv> a.some_link»). Live(). Возможно, вам придется построить эту селекторную строку на лету, сделав что-то вроде «#» + this.id + »> a.some_link», но это должно быть возможно. –