Jquery 当对象不断动态更改时,取消注册live click事件

Jquery 当对象不断动态更改时,取消注册live click事件,jquery,Jquery,我有一个div,在其中动态添加不同的表 我需要维护一个已经整理好的列 我使用全局变量来存储列名 由于表已更改(也可以动态添加不同的结构化表) 我注册了一个TH(桌面点击事件)。我需要在其中传递JSON url 我使用liveevent,因为后面会追加该表 我想在添加新表时取消注册所有TH click事件 我使用UNBIND,但它不起作用。我的单击事件使用不同的参数触发两次 代码: //可能需要 (此代码是我的jquery插件的一部分,其中Opts是jquery选项) 非常感谢您提供的任何帮助。.

我有一个div,在其中动态添加不同的表

我需要维护一个已经整理好的列

我使用全局变量来存储列名

由于表已更改(也可以动态添加不同的结构化表)

我注册了一个TH(桌面点击事件)。我需要在其中传递JSON url

我使用liveevent,因为后面会追加该表

我想在添加新表时取消注册所有TH click事件

我使用UNBIND,但它不起作用。我的单击事件使用不同的参数触发两次

代码:

//可能需要 (此代码是我的jquery插件的一部分,其中Opts是jquery选项)

非常感谢您提供的任何帮助。

.live()将接受.die()以解除事件与select的绑定。api.jquery.com/die


顺便说一句,您不需要重复$('selector here')部分,只需将其用作以下$('blabla').die('click').live()

所以你的代码应该是

$("#" + control.attr("id") + " tr th").die('click').live("click" , function(){
    var table_head = $(this);
    var  new_sort_column = (table_head.text());
    opts.columnName = new_sort_column;
    ColumnName = new_sort_column;
    opts.IsAscending = GlobalIsAscending ;
    GlobalIsAscending = !GlobalIsAscending ;
    getPageSet(control, opts, 0);
});

为什么您要同时解除绑定和活绑定?
live
(现在被弃用,支持
delegate
on
)的全部目的是避免在DOM改变时必须重新绑定。只运行一次
live
绑定,事件触发两次就不会有问题了。@DavidHedlund实际上我需要调用一个函数getPageSet(control,opts,0),在该函数中对其他动态表的选项进行更改。
.live()
将接受
.die()。顺便说一句,你不需要重复
$('selector here')
部分,只需将其用作以下
$('blablabla').die('click').live()
$("#" + control.attr("id") + " tr th").die('click').live("click" , function(){
    var table_head = $(this);
    var  new_sort_column = (table_head.text());
    opts.columnName = new_sort_column;
    ColumnName = new_sort_column;
    opts.IsAscending = GlobalIsAscending ;
    GlobalIsAscending = !GlobalIsAscending ;
    getPageSet(control, opts, 0);
});