更改页面后附加事件会怎样?
What happens to attached events after changing the page?
考虑这种情况:
2 个略有不同的页面和 2 个略有不同的表格:user-table
和 admin-table
。两者都实现分页。让我们假设这个
<div class="pager">
Pager implementation
</div>
我将事件附加到 .pager
、页码按钮,并在不同的文件中执行两次。每个文件都有不同的寻呼机实现(即调用不同的控制器)。这些脚本包含在它们相应的页面中,并在 DOM 加载后加载。
用户-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
。单击页码后,将触发事件并加载内容。
当我导航到管理页面并执行相同操作时会发生什么?为什么它有效?
导航后,正在加载第二个脚本,新事件 assigned/delegated。不应该有冲突吗?是之前page/script'forgotten'的事件吗?脚本将被缓存,我预计会再次发生冲突,但事实并非如此。
有人可以向我解释一下工作流程或事件生命周期吗?离开页面后,现有事件会发生什么变化?我尝试使用谷歌搜索,但找不到任何相关内容。
Are the events from the previous page/script 'forgotten'?
是的。 HTML 是完全无状态的。浏览器只会考虑当前加载到 DOM 中的内容。当 beforeunload 事件触发时,所有之前的页面都将从内存中删除。
考虑这种情况:
2 个略有不同的页面和 2 个略有不同的表格:user-table
和 admin-table
。两者都实现分页。让我们假设这个
<div class="pager">
Pager implementation
</div>
我将事件附加到 .pager
、页码按钮,并在不同的文件中执行两次。每个文件都有不同的寻呼机实现(即调用不同的控制器)。这些脚本包含在它们相应的页面中,并在 DOM 加载后加载。
用户-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
。单击页码后,将触发事件并加载内容。
当我导航到管理页面并执行相同操作时会发生什么?为什么它有效? 导航后,正在加载第二个脚本,新事件 assigned/delegated。不应该有冲突吗?是之前page/script'forgotten'的事件吗?脚本将被缓存,我预计会再次发生冲突,但事实并非如此。
有人可以向我解释一下工作流程或事件生命周期吗?离开页面后,现有事件会发生什么变化?我尝试使用谷歌搜索,但找不到任何相关内容。
Are the events from the previous page/script 'forgotten'?
是的。 HTML 是完全无状态的。浏览器只会考虑当前加载到 DOM 中的内容。当 beforeunload 事件触发时,所有之前的页面都将从内存中删除。