这很好用:
$('#edit_curriculum .generated').children().blur(function(){
console.log(this);
});
Run Code Online (Sandbox Code Playgroud)
但这不是:
$('#edit_curriculum .generated').children().live('blur', function(){
console.log(this);
});
Run Code Online (Sandbox Code Playgroud)
obs:函数包含在一个$(document).ready事件中.
工作:
<input type=?"text" name=?"phones[]?" class=?"medium phone valid">
Run Code Online (Sandbox Code Playgroud)
不工作:
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
Run Code Online (Sandbox Code Playgroud)
来自jQuery live()文档:
现在和将来,为当前选择器匹配的所有元素附加事件处理程序.
此函数用于处理selector元素,而不是元素集合.我会使用以下语法:
$('#edit_curriculum .generated > *').live('blur', function(){
console.log(this);
});
Run Code Online (Sandbox Code Playgroud)
这个选择器将获得任何直接的孩子(因此你以前拥有的)但是有selection没有traversal.这应该允许您live()按照您的预期使用.希望这可以帮助!