jquery结合就绪和点击事件

Ray*_*uin 1 javascript jquery

所以我有同样的代码,可以运行Ready和Click事件,但是当我尝试将它们组合起来时,它不起作用

$("input[name='reimburse']").on("ready click", function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

我认为它必须做Ready功能,因为即使这样也行不通

$("input[name='reimburse']").on("ready", function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

相反,我必须为Ready功能执行此操作

$("input[name='reimburse']").ready(function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

除了创建另一个JS函数并从2个不同的声明事件调用该方法之外,我该如何实现我的初始代码?为什么不打电话on("ready")

编辑:我注意到该ready事件不适用于个别DOM,load应该使用它.我试过这个,但仍然无法正常工作.只有click活动有效.我也曾尝试更换onbind和同样的事情发生.

jfr*_*d00 5

ready事件适用于文档,而不适用于单个DOM元素.因此,没有ready适用于"input[name='reimburse']"DOM元素的特定事件.

如果您要做的是在首次加载页面和触发特定单击事件时同时触发相同的函数,那么您可以将公共事件处理代码放入命名函数中,然后引用该函数来自两个独立的事件处理程序:

function myHandler(e) {
    // code here
}

$(document).ready(myHandler);
$("input[name='reimburse']").on("click", myHandler);
Run Code Online (Sandbox Code Playgroud)

但是,上面的最后一行代码只有在已经加载了这些DOM元素的情况下才会起作用.因此,您可能需要将该行代码放在.ready()处理程序中(取决于运行代码的位置).

$(document).ready(function() {
    $("input[name='reimburse']").on("click", myHandler);
    myHandler();
});
Run Code Online (Sandbox Code Playgroud)

这是另一个相关的答案:jQuery.ready()等效的元素事件监听器?

为什么不打电话("准备好")工作?

因为jQuery决定不支持该结构.jQuery曾经支持$(document).on( "ready", handler ),但是从jQuery v1.8开始,该支持已被弃用(例如,你不应该使用它,因为它将被删除).根据jQuery文档,可以使用这三种形式.ready().

$( document ).ready( handler )
$().ready( handler )             // works, but not recommended
$( handler )
Run Code Online (Sandbox Code Playgroud)

如果您不得不指定一个事件处理程序并在初始化时调用您的函数,那么您可以创建自己的插件来为您执行此操作:

 $.fn.initOn = function(events, handler) {
     this.on(events, handler);
     handler();
 }
Run Code Online (Sandbox Code Playgroud)

然后,而不是这个:

$(document).ready(function() {
    $("input[name='reimburse']").on("click", myHandler);
    myHandler();
});
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

$(document).ready(function() {
    $("input[name='reimburse']").initOn("click", myHandler);
});
Run Code Online (Sandbox Code Playgroud)