更改页面后,附加事件会如何处理?

时间:2019-04-01 16:00:29

标签: javascript jquery jquery-events

考虑这种情况:

2个略有不同的页面和2个略有不同的表:user-tableadmin-table。两者都实现分页。假设这个

<div class="pager">
    Pager implementation
</div>

我将事件附加到.pager,页码按钮上,并在不同的文件中执行两次。每个文件具有不同的寻呼机实现方式(即,调用不同的控制器)。这些脚本包含在其相应的页面中,并在加载DOM之后加载。

user-table.js

$('.pager').on('click', '.page', function() {
    $.get(...) //calling user-controller to get the results
};

admin-table.js

$('.pager').on('click', '.page', function() {
    $.get(...) //calling admin-controller to get the results
};

以某种方式起作用,并且不会冲突。这对我来说是违反直觉的。

当我导航到用户页面时,user-table.js已加载。单击页码后,将触发事件并加载内容。

导航到管理页面并执行相同操作会发生什么?为什么行得通? 导航后,将加载第二个脚本,并分配/委托新事件。不应该有冲突吗?前一页/脚本中的事件是否被“遗忘”?这些脚本将被缓存,并且我期望再次发生冲突,但事实并非如此。

有人可以向我解释工作流程或事件的生命周期吗?离开页面后,现有事件会如何处理?我尝试谷歌搜索,但找不到任何相关内容。

1 个答案:

答案 0 :(得分:1)

  

上一页/脚本中的事件是否被“遗忘”?

是的。 HTML完全是无状态的。浏览器只会考虑当前加载到DOM中的内容。触发beforeunload事件时,将从内存中删除所有以前的页面。