我正在研究jQuery函数trigger()
。我得到了定义,但我不明白为什么要使用它。像例如给出
$('#foo').on('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
一旦加载页面并且单击一个ID为“foo”的按钮,这将返回弹出窗口。
但这也可以通过点击()或只添加
来完成$('#foo').on('click', function() {
alert($(this).text());
});
我不明白为什么以及何时应该使用它以及它是如何工作的?
我从其他资源中读到了这个,但是这里的答案更令人满意。
提前致谢
答案 0 :(得分:2)
.trigger()
实际上速度更快,因此功能更少。
在内部,.click()
方法实际上最终使用.trigger()
:
jQuery.fn.click = function (data, fn) {
if (fn == null) {
fn = data;
data = null;
}
return arguments.length > 0 ? this.on("click", null, data, fn) : this.trigger("click");
}
答案 1 :(得分:2)
使用此代码
$('#foo').on('click', function() {
alert($(this).text());
});
只会为点击添加一个监听器,每当您点击该项目时,只会出现此警报,而不是自动,
但是如果您的要求基于某些条件匹配,您想要显示该警报并且用户实际上没有点击该项目,那么您可以从您的js触发它
使用此
$('#foo').trigger('click');
现在谈论.click()
只会调用上面的函数,所以它会为你节省一个函数调用绑定并返回....
所以这是一个技术性较慢的触发器,但是这个调用和返回的分钟延迟对你的项目很重要
答案 2 :(得分:0)
来自上述评论:
“为什么
.trigger('click')
,为什么不只是.click()
?”
以下两行具有相同的效果:
$('#foo').trigger('click');
$('#foo').click();
后者显然更容易输入,但正如已经指出的那样,它最终会在幕后调用.trigger('click')
,因此在运行时效率较低 - 尽管在许多情况下差异无关紧要所有
然而, .trigger()
的另一个优点是,它允许您将其他信息传递给事件处理程序,您无法通过调用做的事情.click()
。例如:
$('#foo').trigger('click', ['extra', 'info']);
然后可以通过事件处理程序中的参数获取此额外信息:
$('#foo').on('click', function(event, param1, param2) {
alert(param1 + "\n" + param2);
});
(请注意,此示例与jQuery doco中的示例几乎相同。您在问题中获得了代码。您是否阅读了所有doco页面?)