为什么要使用.trigger()jquery函数和什么时候?

时间:2013-05-16 10:20:34

标签: jquery

我正在研究jQuery函数trigger()。我得到了定义,但我不明白为什么要使用它。像例如给出

$('#foo').on('click', function() {
    alert($(this).text());
});
$('#foo').trigger('click');

一旦加载页面并且单击一个ID为“foo”的按钮,这将返回弹出窗口。

但这也可以通过点击()或只添加

来完成
$('#foo').on('click', function() {
    alert($(this).text());
});

我不明白为什么以及何时应该使用它以及它是如何工作的?

我从其他资源中读到了这个,但是这里的答案更令人满意。

提前致谢

3 个答案:

答案 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页面?)