jquery结合就绪和点击事件

时间:2015-05-22 23:12:53

标签: javascript jquery

所以我有同样的代码,可以运行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,同样的事情发生了。

4 个答案:

答案 0 :(得分:5)

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

如果你要做的是在首次加载页面和触发特定的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() equivalent event listener on elements?

  

为什么不打电话(“准备好”)?

因为jQuery决定不支持该结构。 jQuery用于支持$(document).on( "ready", handler ),但是从jQuery v1.8开始,该支持已被弃用(例如,您不应该使用它,因为它将被删除)。根据{{​​3}},这三种表单可用于.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);
});

答案 1 :(得分:2)

你可以模仿点击就绪:

jQuery(document).ready(function () {

    $("input[name='reimburse']").click(function() {
        //some code
    });

    $("input[name='reimburse']").click();
});

答案 2 :(得分:0)

尝试使用bind()

$("input[name='reimburse']").bind("ready click", function() {
    //some code
});

根据文件

  

通过包含每个事件类型,可以一次绑定多个事件类型   用空格分隔

注意,readydocument有效,不应用于元素。要获得类似功能,请使用load

$("input[name='reimburse']").bind("load click", function() {
    //some code
});

答案 3 :(得分:0)

来自这里的jQuery文档:https://api.jquery.com/ready/

  

还有$(document).on(“ready”,handler),从jQuery 1.8开始不推荐使用。这与ready方法的行为类似,但如果ready事件已经触发并且您尝试.on(“ready”),则不会执行绑定处理程序。绑定此方式的就绪处理程序将在上述其他三种方法绑定后执行。

虽然你不应该尽可能使用弃用的方法,但我很好奇,你在哪里设置你的事件监听器?