Jquery 当对象不断动态更改时,取消注册live click事件
我有一个div,在其中动态添加不同的表 我需要维护一个已经整理好的列 我使用全局变量来存储列名 由于表已更改(也可以动态添加不同的结构化表) 我注册了一个TH(桌面点击事件)。我需要在其中传递JSON url 我使用liveevent,因为后面会追加该表 我想在添加新表时取消注册所有TH click事件 我使用UNBIND,但它不起作用。我的单击事件使用不同的参数触发两次 代码: //可能需要 (此代码是我的jquery插件的一部分,其中Opts是jquery选项) 非常感谢您提供的任何帮助。.live()将接受.die()以解除事件与select的绑定。api.jquery.com/dieJquery 当对象不断动态更改时,取消注册live click事件,jquery,Jquery,我有一个div,在其中动态添加不同的表 我需要维护一个已经整理好的列 我使用全局变量来存储列名 由于表已更改(也可以动态添加不同的结构化表) 我注册了一个TH(桌面点击事件)。我需要在其中传递JSON url 我使用liveevent,因为后面会追加该表 我想在添加新表时取消注册所有TH click事件 我使用UNBIND,但它不起作用。我的单击事件使用不同的参数触发两次 代码: //可能需要 (此代码是我的jquery插件的一部分,其中Opts是jquery选项) 非常感谢您提供的任何帮助。.
顺便说一句,您不需要重复$('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);
});