我浏览过.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()文档中的任何地方看到这一点。这是如何运作的?
答案 0 :(得分:2)
它没有触发这样做。你的触发器只被触发一次。
原因是input
事件包含许多其他事件,例如keyup,change,paste和其他一些事件
正如其他人所说,您需要在添加侦听器之前更正调用触发器的顺序
答案 1 :(得分:2)
您需要register
此事件才能invoke
。由于您已声明DOM事件(未注册为jquery事件的事件),因此您需要使用函数trigger()
。对于在jquery中预定义的那些(例如click
,change
),您可以直接调用它们而无需trigger
。
$(document).ready(function() {
$("#theInput").on("input", function() {
alert("Here");
});
$("#theInput").trigger("input");
});
答案 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