我想知道这是否可能:
在活动期间我想检查某些条件,如果条件成立,我想立即取消活动。
在下面的情况中,如果满足这个条件,我想不允许用户对表格进行排序。
$(table).bind("sortBegin",function(e, table) {
if(condition_is_met){
// ?? How to cancel the sortBegin?
}
});
在jquery中是否可以这样?
更新:
道歉,
1)我认为标记tablesorter
足够清楚,表明我正在使用哪个插件。 ;)无论如何tablesorter
它是。感谢
2)我想禁止任何种类的分类,直到不再满足条件为止。我不介意整个表是停止排序还是只停止当前事件。
答案 0 :(得分:1)
不幸的是插件没有考虑preventDefault
- 您需要修改它或抛出异常来中止
调用堆栈,它应该与支持良好的preventDefault
实际上相同,但更丑陋。
$(table).bind("sortBegin",function(e, table) {
if(condition_is_met){
throw new Error("");
}
});
IIRC,jQuery中的.trigger()
同步工作,如果这是真的那么这将有效。
如果您想修改插件,可以添加对preventDefault
的支持:
var e = $.Event( "sortBegin" );
$this.trigger(e, $t0);
if( !e.isDefaultPrevented() ) {
setTimeout(function(){
// set css for headers
setHeadersCss($t0);
multisort($t0);
appendToTable($t0);
}, 1);
}
现在,当代码的客户端在sortBegin事件中调用e.preventDefault()
时,插件将不会继续进行排序。
答案 1 :(得分:-2)
jQuery提供unbind函数来取消绑定选择器中的事件
这是一个例子
$('#foo').unbind('click');