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
$(".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.
You are missing a function()
callback block of 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.
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.
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 ); // <-- function name without parens
myEventHanler() {
$(".tablesorter")
.bind("sortStart",function(e, table)
{
$('.tablesorter').trigger('pageSet',0)
})
}
}
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With