jquery.trigger什么时候开火

时间:2016-01-27 00:08:50

标签: javascript jquery html

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

HTML:

<input id="theInput"/>

的Javascript

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


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

现在,每个keyup / paste事件都会触发输入事件。但我没有在.trigger()文档中的任何地方看到这一点。这是如何运作的?

4 个答案:

答案 0 :(得分:2)

它没有触发这样做。你的触发器只被触发一次。

原因是input事件包含许多其他事件,例如keyup,change,paste和其他一些事件

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

答案 1 :(得分:2)

您需要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/

答案 2 :(得分:1)

在您的代码中,.trigger()没有任何效果,因为trigger()会在input事件附加之前触发。

所以你的代码应该是这样的

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

<强> Fiddle

答案 3 :(得分:1)

这里的解释

正如你在jQuery的文档中看到的那样,Trigger函数执行一个自定义事件,看看这里执行了

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

添加hanlder的地方就在这里

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

包括你说的,当你在input元素中写一些东西时,运行函数中的内容

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

这一开始令人困惑,因为乍一看不知道会发生什么。 通过将处理程序添加到#theInput,您将向事件类型添加一个侦听器&#34; input&#34; 在JavaScript中,有一个类型&#34;输入&#34; 它适用于元素&#34;输入&#34;和&#34; textarea&#34;并且当它的值被改变时执行,或者换句话说当我们写它们时执行。 所以这个代码真正做到了这一点。 使用事件类型&#34;输入&#34;为#theInput添加一个监听器。 如果您想了解更多信息,请阅读以下内容: https://developer.mozilla.org/en-US/docs/Web/Events/input