触发我自己的jQuery函数

时间:2015-04-16 13:24:33

标签: javascript jquery

我正在尝试使用以下命令触发我自己的jQuery函数,但它不起作用。它甚至没有显示警报。有什么想法吗?

(function($){
    $.fn.loadWorksheets = function() {
    alert("test 123");
        var weekEnding = this.value;
        $.post("fetchRows.php", {week_ending: weekEnding}, function(data)
        {
            var data = $.parseJSON(data);
            $("#completedWorksheets > tbody").html("");

            if(data[0] !== false) {
                $(data).each(function(i,val){
                        var newRow = '<tr><td data-th="Week ending">' + data[i]["week_ending"] + '</td><td data-th="Employee">' + data[i]["employee"] + '</td><td data-th="Project">' + data[i]["project"] + '</td><td class="actions"></td></tr>';
                        $("#completedWorksheets tbody").append(newRow);
                });
            }
            else {
                $("#completedWorksheets tbody").append('<tr><td colspan="4">There are no worksheets for the selected week.</td></tr>');
            }
        });
    }
});

$('#week_ending_cm').on('change', function() {
    $.fn.loadWorksheets();
});

感谢。

3 个答案:

答案 0 :(得分:7)

您的初始匿名函数未被调用。它的最后一行应该看起来像

})(jQuery);

不仅仅是

});

由于未调用该函数,因此不会显示警报,也未定义您的jQuery插件。

如您对问题的评论中所述,如果您正在创建一个不打算在jQuery对象上运行的jQuery方法的函数,通常会将这些函数添加为$的属性而不是{ {1}}。

答案 1 :(得分:6)

尝试将函数的最后一个字符串替换为: })($);

答案 2 :(得分:2)

你的Js应该是这样的: (您错过了函数定义块末尾的两个括号)。

(function($){
$.fn.loadWorksheets = function() {
alert("test 123");
    var weekEnding = this.value;
    $.post("fetchRows.php", {week_ending: weekEnding}, function(data)
    {
        var data = $.parseJSON(data);
        $("#completedWorksheets > tbody").html("");

        if(data[0] !== false) {
            $(data).each(function(i,val){
                    var newRow = '<tr><td data-th="Week ending">' + data[i]["week_ending"] + '</td><td data-th="Employee">' + data[i]["employee"] + '</td><td data-th="Project">' + data[i]["project"] + '</td><td class="actions"></td></tr>';
                    $("#completedWorksheets tbody").append(newRow);
            });
        }
        else {
            $("#completedWorksheets tbody").append('<tr><td colspan="4">There are no worksheets for the selected week.</td></tr>');
        }
    });
}
})($); // <<<==== HERE WE INSTANTLY CALL IT

$('#week_ending_cm').on('change', function() {
    $.fn.loadWorksheets();
});