“e.handler.apply”不是jquery表分类器中的函数

在我的一个应用程序中,我正在使用JQUERY tablesorter.But在使用任何cloumns进行排序时,我得到的错误。 知道为什么会这样。

错误:“e.handler.apply”在Jquery.js中不起作用

我使用表格分类器的代码如下。

$(".tablesorter") .tablesorter( { headers: { 0: { sorter: false}}, widgets: ['zebra'], fixedHeight: false }) .tablesorterPager({ container: $(".pager") }); $("#sortHeader").click( $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0); }) ); 

但是,如果我正在评论从“$(”#sortHeader“)开始的代码。单击”然后它正常工作。 但我需要这部分代码来满足我的要求。

对此有任何想法。

你缺少一个function()回调块的click

 $("#sortHeader").click(function(){ // <-----you need to have a callback function. $(".tablesorter").bind("sortStart",function(e, table){ $('.tablesorter').trigger('pageSet',0); }); }); // <---do a proper closing. 

您的代码中的问题:

当你这样做时:

 $("#sortHeader").click( 

没有回调函数,总是会在jQuery库中给出错误,因为你必须知道Error : "e.handler.apply" is not function in Jquery.js

因为编写.click()方法的方法,所以每次触发此事件时都需要一个回调函数来执行某些操作。 所以在你的代码中jQuery认为无论写在(...here...)是对被触发的click事件的回调,它都无法应用该回调。

就目前而言,您要做的是将参数传递给jQuery的click函数。 更具体地说,对bind的调用的返回值,它只返回一个jQuery对象,它不是一个函数,因此apply是未定义的,这会导致你得到的错误。

你需要在函数声明中包含你在click()中写的内容:

 $("#sortHeader").click( function(e) { //important! $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0); }) }); //close it too 

正如其他人所说,你必须提供一个function。

一种方法是获取有问题的现有代码,并将其包装在匿名函数中:

 $("#sortHeader").click( function() { $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0) }) } }); 

另一种方法是给这个函数一个名字。 如果您已经为您的函数命名并且仍然遇到问题,请确保您已经传递了函数名称而没有括号。

 $("#sortHeader").click( myEventHanler ); // <-- function name without parens myEventHanler() { $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0) }) } } 

我错误地放置了Underscore.js debounce函数的第三个参数,它以某种方式导致了同样的错误。

坏:

 $('#color_search_text').keyup(_.debounce(processSearch, MILLS_TO_IGNORE_SEARCH), true); 

好:

 $('#color_search_text').keyup(_.debounce(processSearch, MILLS_TO_IGNORE_SEARCH, true));