проблема с функцией "live" jquery

проблема

это прекрасно работает:

$('#edit_curriculum .generated').children().blur(function(){
    console.log(this);
});

но это не так:

$('#edit_curriculum .generated').children().live('blur', function(){
    console.log(this);
});

obs: функции обернуты в $(document).ready событие.


выходы

работает:

<input type=​"text" name=​"phones[]​" class=​"medium phone valid">

не работает:

Uncaught Syntax error, unrecognized expression: )
k.errorjquery.js:17
k.filterjquery.js:17
kjquery.js:17
c.querySelectorAll.kjquery.js:17
k.matchesSelectorjquery.js:17
f.extend.filterjquery.js:17
f.fn.extend.isjquery.js:17
f.fn.extend.closestjquery.js:17
Njquery.js:16
f.event.handlejquery.js:17
f.event.add.k.i.handle.kjquery.js:16
f.event.triggerjquery.js:17
ejquery.js:17

1 ответов


в jQuery live () документы:

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

эта функция предназначена для работы на selector, а не набор элементов. Я бы использовал следующий синтаксис:

 $('#edit_curriculum .generated > *').live('blur', function(){
   console.log(this);
 });

этот селектор получит любые непосредственные дети (следовательно, то, что у вас было раньше), но с selection, а не traversal. Это должно позвольте вам использовать live() как и следовало ожидать. Надеюсь, это поможет!