Re-Bind时我应该使用Jquery- $ .remove()吗?

时间:2012-09-24 06:09:23

标签: c# javascript jquery asp.net html

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

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

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

在客户端我写道:

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

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

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

另外,如果我写的话,你的回答会有所不同吗?

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

3 个答案:

答案 0 :(得分:1)

当您通过完整的POST或GET请求重新加载页面时,没有必要删除处理程序。无论如何,remove()将从DOM中删除元素,而不是简单地删除事件处理程序。要删除要使用off()的事件处理程序。

答案 1 :(得分:1)

如果这样写:

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

内存泄漏不是问题,因为你在dom bubble上模式匹配到所有“.myButton”的出现。

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

附加到所有个别的“.myButton”事件

答案 2 :(得分:0)

on将回调应用于任何.myButton元素no matter when it is added to the page(它与旧的live方法完成相同的工作)。使用remove不会清除客户端绑定。

您应该use off或阻止原始绑定(如果使用页面回发重新绑定)。