“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));