可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
In one of my application I am using JQUERY tablesorter.But while sorting with any of the cloumns I am getting below error. Any idea why this is happening.
Error : "e.handler.apply" is not function in Jquery.js
My code to use table sorter is as below.
$(".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); }) );
But If I am commenting the code which starts from "$("#sortHeader").click" then it is working fine. But I need that portion of code to meet my requirement.
Any thoughts on this.
回答1:
You are missing a function() callback block of click:
$("#sortHeader").click(function(){ //
Issue in your code:
When you do :
$("#sortHeader").click(
without a callback function that will always gives you error in the jQuery library as you got to know Error : "e.handler.apply" is not function in Jquery.js
Because the way .click() method is written it needs a callback function to do something whenever you fire this event. so in your code jQuery thinks that whatever written in the (...here...) is a callback to the fired click event and it fails to apply that callback.
回答2:
As it stands, what you're trying to do is to pass a parameter to jQuery's click function. More specifically, the return value of your call to bind, which just returns a jQuery object, which is not a function, hence apply is undefined on it and this results in the error that you're getting.
You need to wrap what you wrote inside click() in a function declaration:
$("#sortHeader").click( function(e) { //important! $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0); }) }); //close it too
回答3:
As others have said, you must provide a function.
One way is to take the existing code in question, and wrap it in an anonymous function:
$("#sortHeader").click( function() { $(".tablesorter") .bind("sortStart",function(e, table) { $('.tablesorter').trigger('pageSet',0) }) } });
The other way is to give this function a name. If you've given your function a name and are still having trouble, ensure that you have passed the function name without parentheses.
$("#sortHeader").click( myEventHanler ); //
回答4:
I incorrectly placed the third parameter of the Underscore.js debounce function, which somehow caused the same error.
Bad:
$('#color_search_text').keyup(_.debounce(processSearch, MILLS_TO_IGNORE_SEARCH), true);
Good:
$('#color_search_text').keyup(_.debounce(processSearch, MILLS_TO_IGNORE_SEARCH, true));