部分 View 刷新后,Javascript 表行单击不起作用

标签 javascript asp.net-mvc

我有一个简单的页面,在部分 View 中显示项目表。

<div id="divList">
    @Html.Action("_list")
</div>

_list.cshtml 显示项目列表:

<table id=tblList">
    <thead>
        <tr>
            <th>List</th>
        </tr>
    </thead>
    <tbody>
        <tr id="1">
            <td>ItemName1</th>
        </tr>
        <tr id="2">
            <td>ItemName2</th>
        </tr>
    </tbody>
</table>

在主页中,我有以下 JavaScript,以便我可以获得所选行的 ID:

$('#tblList tr').click(function () {
    alert($(this).attr("id"));
});

上面的代码可以工作,但是刷新部分 View 后就不起作用了。所以我做了一些研究并认为我需要类似的东西:

$('#tblList').on('click', 'tr', function () {
    alert("row clicked");
    alert($(this).attr("id"));
});

但是我尝试了很多方法和组合,但我无法让它发挥作用..我错过了什么? 我试过这个solution但也没有成功。

$('document').on('click', '#tblList tr', function () {
    alert("row clicked");
    alert($(this).attr("id"));
});

最佳答案

在连接点击事件处理程序后,您似乎正在更新 ID 为“divList”的 div 的内容。因此动态注入(inject)的 DOM 元素(该 div 的新内容)将不会注册单击事件处理程序。

在容器 div 上使用 jQuery on 注册您的点击事件。

$('#divList').on('click', 'tr', function () {
    alert("row clicked");
    alert($(this).attr("id"));
});

jQuery on 适用于当前和 future (动态注入(inject)到 DOM)元素

这里正在工作 jsbin sample .

不应有多个具有相同 id 值的元素。 Id 应该是唯一的。

关于部分 View 刷新后,Javascript 表行单击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797597/

相关文章:

c# - 如何在不知道 MIME 类型的情况下在 ASP.NET 中返回 FileResult?

c# - 是否可以使用 SolrNet 映射复杂类型

.net - Webpack 4 中与本地 js 文件(第三方库)捆绑的问题

javascript - 在 javascript 中将 onclick 事件设置为 C# URL 操作?

javascript - 两个站点上的 SECURITY_ERR : DOM Exception 18 when applying document. 域。我该如何解决这个问题?

javascript - 使用线性渐变 CSS 将 html Div 分成 12 列

javascript - React native (Android) - 创建 URL.createObjectURL(blob)

javascript - JS如何在包括Firefox在内的浏览器中下载10个以上的文件

c# - Autofac 随机无参数公共(public)构造函数。错误

javascript - 在 MVC3 Controller 操作中获取 javascript 推送对象数组