我有這樣的代碼在主體onload事件:Jquery的事件冒泡時。對事件是一個嵌套函數內
$.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的工作代碼。如果表格是動態添加的,則不起作用。
編輯II:更新jsfiddle動態添加的表,用於表明事件偵聽器不更新到新的表元素。
編輯III:100%的工作jsfiddle,非常感謝@Rob Schmuecker(見接受的答案)
看起來像喲你的代碼在添加表之前運行。 –
@AnkitJaiswal,我知道。這就是事件冒泡或事件代表團進來的地方,無論如何它都應該起作用。看看[本頁]的最後一部分(http://jqfundamentals.com/chapter/events)。 – aanders77