繁体   English   中英

jquery.trigger什么时候触发

[英]When does jquery.trigger fire

我已经阅读了.trigger()文档http://api.jquery.com/trigger/ 但是仍然不确定这个小提琴是如何工作的。 链接: https//jsfiddle.net/LanceShi/s7pm43f3/2/

HTML:

<input id="theInput"/>

Java脚本

$(document).ready(function() {
    $("#theInput").trigger("input");
});


$("#theInput").on("input", function() {
    alert("Here");
});

现在,在每个键入/粘贴事件上都会触发输入事件。 但是,我在.trigger()文档中没有看到任何提及此内容的信息。 这是如何运作的?

它不会触发该操作。 您的触发器仅被触发一次。

原因是input事件包含许多其他事件,例如按键,更改,粘贴和其他一些事件。

正如其他人所指出的,您需要在添加监听器之前更正调用触发器的顺序

您需要先register事件,然后才能invoke 由于您已声明DOM事件(未注册为jquery事件的事件),因此需要使用函数trigger() 对于jquery中预定义的内容(例如clickchange ),您可以直接调用它们而无需使用trigger

$(document).ready(function() {

  $("#theInput").on("input", function() {
    alert("Here");
  });

    $("#theInput").trigger("input");
});

范例: https : //jsfiddle.net/DinoMyte/s7pm43f3/3/

在您的代码中, .trigger()没有任何作用,因为您的trigger()将在附加input事件之前trigger()

所以你的代码应该像这样

$(document).ready(function() {
  $("#theInput").on("input", function() {
    alert("Here");
  }).trigger('input');
});

小提琴

这里的解释

正如您在jQuery文档中阅读的那样,Trigger函数执行一个自定义事件,很好地看到这里已执行

$("#theInput").trigger("input");

在这里添加了hanlder

$("#theInput").on("input", function() {
    alert("Here");
});

包括您所说的内容,当您在input元素中编写内容时,将运行函数中的内容

function() {
    alert("Here");
}

起初这令人困惑,因为乍一看不知道会发生什么。 通过将处理程序添加到#theInput,您将向事件类型“ input”添加一个侦听器。在JavaScript中,存在一个类型为“ input”的事件,它适用于元素“ input”和“ textarea”,并且在其值更改时执行或者换句话说,当我们写关于它们的时候。 因此,实际上这段代码在做什么。 将事件类型为“ input”的侦听器添加到#theInput。 如果需要更多信息,可以阅读以下内容: https : //developer.mozilla.org/zh-CN/docs/Web/Events/input

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM