好的,这就是问题所在。 我有一个jqGrid对话框,只有在单击“添加记录”按钮后才会在HTML中生成。
我将“Click”事件处理程序附加到该对话框中的按钮,以便在单击时打开弹出窗口(这在文档就绪后完成),但它不起作用,因为当页面加载时,事件处理程序由IE和它看到该对话框此刻不存在并删除或阻止当前无效的处理程序。
如果在加载页面时不存在函数,如何将JavaScript事件处理程序附加到该对话框(或任何元素)来执行函数?
答案 0 :(得分:1)
如果您可以在页面加载的HTML中放置对话框的某些部分(即使只是占位符div
,您将在其中插入对话框的HTML),您可以使用jQuery中的委托事件来附加事件处理程序在页面加载时在DOM中不存在的后代元素(如对话框的元素)。
请参阅jQuery documentation for on()
。
这会将事件处理程序绑定到click
事件,以便在将来的任何时候将ID myButtonId
添加到DOM的按钮,只要它位于占位符div
内:
<div id="divPlaceholder"><!-- dialog will be inserted into DOM here --></div>
<script type="text/javascript">
$($("#divPlaceholder").on("click", "#myButtonId", function() {
window.open(...);
}));
</script>
或者,当用户单击“添加记录”以显示jqGrid对话框时运行的任何脚本都可以显示该对话框,然后将事件处理程序直接添加到该按钮。