我正在尝试使用以下命令触发我自己的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();
});
感谢。
答案 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();
});