如何从排序表标题中删除单击

时间:2013-10-08 19:14:12

标签: javascript jquery dom

第一次发帖虽然我已经在这里听了一段时间的有用建议。

我有一个表正在通过一些我自己没有构建的Jquery函数进行排序,因此不确定它是如何运行的。如果单击标题列,则按该列对表格进行排序,然后向下标准化。我想删除第一列的排序,因为这是一系列复选框,排序干扰了移动设备上的checkall功能。

我尝试过使用以下脚本。首先删除排序类,然后尝试删除on click函数。正在删除该类(因此javascript正在运行)但是仍然可以单击标题,此时会分配一个新类,因此removeAttr不能正常工作(这是我在此站点上找到的解决方案)。 / p>

<script>
!function ($) {   
    $(function(){   
        $('th:first-child').removeClass( "sorting" );   
        $('th:first-child').removeAttr('onclick');
    })
}(window.jQuery)
</script>

感激不尽的任何帮助。非常感谢,DomC

2 个答案:

答案 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);