jQuery结合准备和点击事件

雷蒙德·奥尔金(Raymond Holguin)

所以我有同时运行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活动有效。我也尝试用替换onbind并且发生相同的事情。

jfriend00

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章