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

时间:2014-06-18 10:18:23

标签: jquery tablesorter

在我的一个应用程序中,我正在使用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“)开始的代码。点击”然后它工作正常。但我需要这部分代码来满足我的要求。

对此有任何想法。

4 个答案:

答案 0 :(得分:5)

您缺少function()的{​​{1}}回调块:

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方法的方式,每次触发此事件时都需要一个回调函数来执行某些操作。所以在你的代码中,jQuery认为在.click()中写的任何内容都是对被激活的(...here...)事件的回调,并且它无法应用该回调。

答案 1 :(得分:1)

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

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

$("#sortHeader").click( function(e) { //important!

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

    })

}); //close it too

答案 2 :(得分:1)

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

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

$("#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)
        })
    }
}

答案 3 :(得分: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));