第一次发帖虽然我已经在这里听了一段时间的有用建议。
我有一个表正在通过一些我自己没有构建的Jquery函数进行排序,因此不确定它是如何运行的。如果单击标题列,则按该列对表格进行排序,然后向下标准化。我想删除第一列的排序,因为这是一系列复选框,排序干扰了移动设备上的checkall功能。
我尝试过使用以下脚本。首先删除排序类,然后尝试删除on click函数。正在删除该类(因此javascript正在运行)但是仍然可以单击标题,此时会分配一个新类,因此removeAttr不能正常工作(这是我在此站点上找到的解决方案)。 / p>
<script>
!function ($) {
$(function(){
$('th:first-child').removeClass( "sorting" );
$('th:first-child').removeAttr('onclick');
})
}(window.jQuery)
</script>
感激不尽的任何帮助。非常感谢,DomC
答案 0 :(得分:4)
.removeAttr('onclick')
不起作用的原因是因为有一个全局的事件处理程序,可能在某些.js文件中(这是正确的位置!)。 onclick将是内联javascript,这是禁忌!
要将其从全局事件处理程序列表中删除,请使用jQuery的.off()
:
// this removes all functions bound on the 'click event
$('th:first-child').off('click');
或者,如果你有一个旧版本的jQuery,.unbind()
:
// this removes all functions bound on the 'click event (older jQuery example)
$('th:first-child').unbind('click');
或者,如果您只想关闭一个功能:
// If ´otherFunction´ is bound to click aswell, it will remain working
$('th:first-child').off('click', functionname);
或者,删除所有事件(即点击,悬停,调整大小):
// Or the big cleanup, this clears ALL functions from ALL events
$('th:first-child').off();
答案 1 :(得分:0)
@ Martijn 回答可能会做你想要的。但我在这里提供更多细节。
这取决于事件(click
)的注册方式。
从第一个标题单元格中删除class或onclick属性可能没有帮助。
它们可能已被用于将onclick事件绑定到该元素。但你需要解开这个事件。
当用户点击标题单元格时,它会触发一个事件。有一些方法绑定到触发器上执行的事件。可能有一个或多个这样的方法在事件上执行。
在这种情况下,事件为click
。
要删除click
所有方法的绑定,可以使用以下 -
$('th:first-child').off('click');
//For old Jquery Version as mentioned by @Matijn
//$('th:first-child').unbind('click');
如果您想取消绑定特定方法 -
$('th:first-child').off('click', reference_to_function);