jquery / javascript:$(document).trigger vs普通函数调用?

时间:2017-07-05 19:04:07

标签: jquery jquery-trigger

我刚看到两个javascript文件:

第一个人在ajax调用成功后调用了以下行:

$(document).trigger("locationloaded");

第二个js:

$(document).on('locationloaded', function () {
   //few lines of code here
});

对JS很新,只是好奇地知道,是否有任何有效的理由通过触发器调用locationloaded?为什么我们不能使用简单的函数作为locationloaded()从最初的js调用?如果两者都做同样的工作,应该使用哪一个?

2 个答案:

答案 0 :(得分:1)

事件声明

on注册一个事件;在这种情况下locationloaded。由于locationloaded是自定义事件,因此触发事件的唯一方法是使用trigger方法。

注册活动customevent并附加功能locationloaded

$(document).on('customevent', locationloaded);

function locationloaded() {
    console.log('The custom event is triggered inside the "locationlaoded" function');
}

触发事件:customevent

$(document).trigger("customevent"); 

反过来,记录消息The custom event is triggered inside the "locationlaoded" function

使用trigger vs直接调用该函数;即locationloaded()

使用trigger DOM 广播消息,即触发事件。所以任何单独的javascript文件都会立即通知

$(document).trigger('subscribe');

$(document).trigger('subscribe')

在同一档案中
$(document).on('subscribe', function() {
   // Send email
});

在另一个javascript文件

$(document).on('subscribe', function() {
   // Save data
});

而直接调用声明的函数只允许在方法的同一上下文中执行任何其他执行任务。

这就是为什么$(document).trigger('locationloaded)`在一个单独的文件中声明,同时如果事件被触发和广播,那么,另一个文件可以执行它的任务。

答案 1 :(得分:0)

根据jQuery trigger

的文档

当相应的事件发生时,会触发附加.on()或其快捷方法之一的任何事件处理程序。但是,可以使用.trigger()方法手动触发它们。