我在正文 onload 事件中有这段代码:
$.each(["#tbl_p2", "#tbl_p5", "#tbl_ukalk"], function(index,value){
$("tbody tr:not(:last)", value).find("input[type='text']:visible:last").on("blur", this, function(){
$("tbody tr:last input[type='text']:first", value).focus()
})
})
提到的表(tbl_p2、tbl_p5 和 tbl_ukalk)都是在某个点动态添加的,它们由几行组成,每行有几个文本输入。代码的目的是在任何一行的最后一个输入模糊时聚焦()最后一行的第一个输入。
它在通过控制台应用时有效,但不是通过 onload,所以我知道它与冒泡有关。我试过像这样添加“文档”......
$.each(["#tbl_p2", "#tbl_p5", "#tbl_ukalk"], function(index,value){
$("document tbody tr:not(:last)", value).find("input[type='text']:visible:last").on("blur", this, function(){
$("tbody tr:last input[type='text']:first", value).focus()
})
})
...冒出足够远的地方,但这在控制台或 onload 中都不起作用——我假设因为“文档”不是 $.each() 中给定上下文的一部分。
我也尝试过,$.each(["document #tbl_p2", ...])
但这也不起作用。
编辑:添加了带有工作代码的jsfiddle 。如果表格是动态添加的,它将无法正常工作。
编辑二:使用动态添加的表更新了 jsfiddle,这表明事件侦听器不会更新到新的表元素。
编辑 III:100% 工作jsfiddle,非常感谢@Rob Schmuecker(见接受的答案)