jQuery / javaScript – click / onclick事件监听器尽管关闭但在循环内部无效
我和我的循环再次…我正在尝试在几个div
运行for
循环,每个div
都在类“ tooltipBox
”中但具有不同的id
。 在每个div
都有一个带有类“ tttFalloutOrder
”的输入文本字段。 我想在for循环中做的是在每个.tttFalloutOrder
输入字段上附加一个click-event-listener。
到目前为止这是我的代码:
function installListener(elementId) { $( "div#" + elementId + " > .tttFalloutOrder" ).on("click", function() { alert("clicked on " + elementId); }); } function runSimulation() { alert("running simulation..."); $( "#lContent h2" ).html("Simulation in progress..."); var agents = $( "div.tooltipBox" ); var rFOs = $( ".rFO" ); var i, j = 0; for(i = 0, j = 0; i < agents.length, j .tttFalloutOrder" ).on("change keypress paste focus textInput input", function() { alert(agentId + "just got changed!"); }); */ setTimeout(function() { $("div#" + agentId + " > div.offlineCover").fadeIn(500); }, ttl*1000); })(i, ttl); } } $( "#lContent h2" ).html("Simulation complete"); }
正如你所看到的,我正在使用一个闭包,甚至委派了将监听器附加到另一个函数的实际任务,在阅读了几个与循环中的事件监听器相关的SO-Answer之后,这将有所帮助……尽管我真的不喜欢我们完全可以看出这会有什么不同。 无论如何,点击听众仍然不会开火,坦率地说我不明白这是什么 – 或者说什么不是 – 发生在这里。
提前谢谢 – 你们这些人总是找到一种方法,让像我这样的不知名的灵魂指向正确的方向,我真的很感激。
更新案例由于我自己的愚蠢而关闭……首先,是的,我有一个未定义的成员坐在我的installListener()
函数中。 其次,jQuery选择器$( "div#" + elementId + " > .tttFalloutOrder" )
返回undefined,因为>
运算符选择第二个元素,它将第一个元素作为直接父元素。 但是,由于.tttFalloutOrder
是一个位于