3

我有从服务器端生成的 html 表:

           DataTable dt2 = new Claims_Service().ASO_MOD_Get_Nulls();
           myGridView.DataSource = dt2;
           myGridView.DataBind();

该表有行,每行都有一个按钮。

在客户端我写:

 $(".myGridView").on('click', '.myButton', function ()
        {
          ...
        }

现在假设我需要在服务器端重新绑定。(重新绑定 === 完整回发并重新生成页面)

我应该在重新绑定之前使用 jQueryremove函数来释放事件并防止内存泄漏吗?

另外,如果我写的话,你的答案会不会有所不同:

$(".myGridView .myButton").on('click',function ()
4

3 回答 3

1

当您通过完整的 POST 或 GET 请求重新加载页面时,无需删除处理程序。在任何情况下,remove()都会从 DOM 中移除元素,而不是简单地移除事件处理程序。要删除要使用的事件处理程序off()

于 2012-09-24T06:16:22.620 回答
1

如果这样写:

$(".myGridView").on('click', '.myButton', function () { /* your code */ });

内存泄漏不是问题,因为您在 dom 气泡上对所有“.myButton”事件进行模式匹配。

尽管

$(".myGridView .myButton").on('click',function () { /* your code */ });

附加到所有单独的“.myButton”事件

于 2012-09-24T06:16:55.443 回答
0

on将回调应用于任何.myButton元素,无论何时将其添加到页面(它与旧方法执行相同的工作live)。使用remove不会清理您的客户端绑定。

您应该使用off或阻止原始绑定(如果重新绑定是通过页面回发完成的)。

于 2012-09-24T06:16:34.877 回答