jquery的“实时”功能存在问题

时间:2011-08-14 21:20:44

标签: javascript 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 个答案:

答案 0 :(得分:7)

来自jQuery live()文档:

  

为现在和将来与当前选择器匹配的所有元素附加处理程序。

此函数适用于selector,而不是元素集合。我会使用以下语法:

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

这个选择器会获得任何直接的孩子(因此你以前拥有的),但selection而不是traversal。这应该允许您按预期使用live()。希望这有帮助!