【发布时间】:2020-12-09 21:11:03
【问题描述】:
我正在使用单页应用程序。
在最后一步,我想根据在 SPA 的最后一步加载的元素触发一个事件。
当我使用这样的功能时:
if ($('.order_details.curve_panel').length >=1) {
alert('it worked');
}
它可以在元素加载后在控制台中运行。但是,当我将代码插入 HTML 时,它实际上并没有触发事件(在这种情况下是警报)。
但是,当我使用 .load 方法时什么都没有
$('.order_details.curve_panel').load(function() {
alert('it worked');
});
我错过了什么吗? SPA 是否会导致此问题,是否有一种方法可以在元素加载后尽快触发事件?
以下是 HTML 示例。 "class= "order_details curve_panel" 直到我的 SPA 的最后一步才会出现。它不会在页面加载时加载,因为它是单页应用程序的一部分。它仅在用户进入 SPA 的最后一步后加载. 在页面加载时,它不可用。
<div class="order_details curve_panel">
<div class="shiptoexpanded">
<div>3 / 15</div>
<div group-key="Shipping 12/2/2020">
<div class="shipSort">20201202</div>
12/2/2020
</div>
<div group-key="">$53.11</div>
<div group-key="">$159.33</div>
<div group-key="">$11.10</div>
<div group-key="">$170.43</div>
</div>
</div>
当这出现时,我需要触发一个事件……现在我只是想触发一个警报。
【问题讨论】:
-
您是否混淆了
.load()ajax 的简写方法和加载事件?试试$('.order_details.curve_panel').on("load", function() { -
@LouysPatriceBessette,很可能我把它弄糊涂了。我会很快尝试的。感谢您的帮助!
-
@LouysPatriceBessette,看起来不起作用。我相信这是因为元素在“屏幕”加载时不可用,因为它是单页应用程序。我相信代码在元素可用之前运行,所以当它们可用时它不会触发。根据 .on 文档:“事件处理程序仅绑定到当前选定的元素;它们必须在您的代码调用 .on() 时存在。为确保元素存在并且可以选择,请将脚本放在HTML 标记中的元素”
-
好的...然后尝试委托:
$(window).on("load", ".order_details.curve_panel", function() {如果可行,我将发布答案。 -
是的,
<div>s 没有加载事件
标签: javascript html jquery event-handling single-page-application