ready
事件适用于文档,而不是单个DOM元素。因此,不存在特定的适用于"input[name='reimburse']"
DOM元素的ready
事件。
如果您想要在页面首次加载和特定点击事件触发时都执行同一函数,那么您可以将公共事件处理代码放入一个命名函数中,然后从两个不同的事件处理程序引用该函数:
function myHandler(e) {
}
$(document).ready(myHandler);
$("input[name='reimburse']").on("click", myHandler);
然而,上面的最后一行代码只有在那些DOM元素已经被加载的情况下才能起作用。因此,您可能需要将该行代码放在.ready()
处理程序中(这取决于代码从哪里运行)。
$(document).ready(function() {
$("input[name='reimburse']").on("click", myHandler);
myHandler();
});
这是另一个相关的回答:
jQuery.ready()相当于元素的事件监听器?
为什么调用on(“ready”)不起作用?
因为jQuery决定不支持该结构。 jQuery曾经支持
$(document).on(“ready”,handler)
,但自jQuery v1.8以来,该支持已被弃用(例如,您不应该使用它,因为它将被删除)。根据
jQuery文档,可以使用以下三种形式来使用
.ready()
。
$( document ).ready( handler )
$().ready( handler ) // works, but not recommended
$( handler )
如果你觉得在指定事件处理程序和在初始化时调用函数两者都让人困扰,那么你可以创建自己的插件来为你完成这个过程。
$.fn.initOn = function(events, handler) {
this.on(events, handler);
handler();
}
然后,不要这样写:
$(document).ready(function() {
$("input[name='reimburse']").on("click", myHandler);
myHandler();
});
你可以这样做:
你只需执行以下操作:
$(document).ready(function() {
$("input[name='reimburse']").initOn("click", myHandler);
});
myHandler()
函数,并像你在示例中所示那样显式地调用它们两次。如果这是唯一的选择,那就这样吧,但它看起来很丑。 - Raymond Holguin