所以我有同时运行Ready和Click事件的同一段代码,但是当我尝试将它们组合时却无法正常工作
$("input[name='reimburse']").on("ready click", function() {
//some code
});
我认为它必须执行Ready功能,因为即使这样也不起作用
$("input[name='reimburse']").on("ready", function() {
//some code
});
相反,我必须为Ready功能执行此操作
$("input[name='reimburse']").ready(function() {
//some code
});
除了创建另一个JS函数并从2个不同的已声明事件中调用该方法之外,如何实现我的初始代码?为什么不打电话on("ready")
呢?
编辑:提请我注意,该ready
事件不适用于单个DOM,load
应该使用它来代替。我已经尝试过了,但是还是行不通。仅click
活动有效。我也尝试用替换on
,bind
并且发生相同的事情。
该ready
事件适用于文档,不适用于单个DOM元素。因此,没有ready
适用于"input[name='reimburse']"
DOM元素的特定事件。
如果您要执行的操作是在首次加载页面和触发特定的click事件时都触发相同的函数,则可以将常见事件处理代码放入命名函数中,然后引用该函数来自两个单独的事件处理程序:
function myHandler(e) {
// code here
}
$(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);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句