我有一个HTML选择,我使用JQuery调用change事件:
$("select#id_sel").change(myMethod);
我在myMethod
添加了提醒,因此我可以测试它是否有效。
当我进入页面并更改选项时,会弹出警报。但是如果由于某种原因(称为单选按钮),选择的代码被AJAX改变了,弹出窗口就不再起作用了(所以事件调用不起作用)。
我已经使用了firebug来查看" AJAX刷新"之后select
ID是否已更改,但它是相同的。
答案 0 :(得分:1)
在行之间进行读取,您将动态更改页面上的id="id_sel"
元素。这意味着当替换元素时,您在页面加载时连接一次的事件处理程序将被丢弃。 id没有改变并不重要,因为id仅用于在页面加载时选择元素。实际的DOM元素不是同一个(即使id是相同的)。
如果是这种情况,则需要使用委派的事件处理程序:
$(document).on('change', '#id_sel', myMethod);
这可以通过监听更改事件冒泡到一个不变的祖先,然后应用jQuery过滤器,然后将该函数应用于任何导致事件的元素。
如果您没有更改元素的不变的祖先,则 document
是默认值。请勿使用'body'
作为默认值,因为它在某些事件类型方面存在问题。
注意:由于ID是唯一的并且在快速循环中,因此您不需要通过在{id}选择器前加select
来减慢速度。