0

我刚刚看到两个 javascript 文件:

在一些成功的ajax调用之后,第一个调用了以下行:

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

第二个js有:

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

对 JS 有点陌生,只是想知道,通过触发器调用 locationloaded 是否有任何正当理由?为什么我们不能有一个简单的函数,比如可以从第一个 js 调用的 locationloaded()?如果两者都做同样的工作,应该使用哪一个?

4

2 回答 2

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

直接使用triggervs调用函数;IElocationloaded()

使用向DOMtrigger广播一个事件被触发的消息。因此,任何监听事件的单独 javascript 文件都会立即通知

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

在同一个文件上$(document).trigger('subscribe')

$(document).on('subscribe', function() {
   // Send email
});

在另一个 javascript 文件上

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

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

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

于 2017-07-05T19:17:37.427 回答
0

根据jQuery 触发器的文档

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

于 2017-07-05T19:10:01.193 回答