.load 后未触发 Javascript/JQuery 函数

火焰

当用户单击我的 ASP.NET 应用程序中的“搜索”按钮时,会加载一个临时的“微调器”div。然后当搜索(最终)完成时,spinner div 的内容被SubmitSearch方法返回的 HTML 替换

$("#spinner").load("@Url.Action("SubmitSearch","Search")");

我还有这个 JavaScript 文件,它被加载到:

$(document).ready(function() {
    $(".card--result").hover(function () {
        alert("hover");
        $(this).css('cursor', 'pointer');
    });

    $(".card--result").click(function() {
        var url = $(this).attr('data-url');
        window.open(url, "_self");
    });
});

但是,问题是带有card--result的 div是在.load方法成功后添加到页面的新 HTML 的一部分

如何注册.hover.click函数,以便在新加载的 HTML 元素上实际触发它们?

空白

为此,您需要事件委托

事件委托允许我们将单个事件侦听器附加到父元素,该事件侦听器将为匹配选择器的所有后代触发,无论这些后代现在存在还是将来添加。

$(document).on("click", ".card--result", function() {
   var url = $(this).attr('data-url');
   window.open(url, "_self");
});

对于光标部分,我想 CSS 就足够了

.card--result {
   cursor: pointer;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章