我在初始页面加载后从全局名称空间调用jquery定义函数时出现问题。基于我下面的代码,页面最初加载正常,但是当我尝试调用onchange事件时,我得到以下异常:
Uncaught TypeError: undefined is not a function
我的jquery代码如下所示:
(function ($) {
$(document).ready(function() {
var user_id = $('#user_id').val();
var identifier = $('#identifier').val();
$.getPostFeed(user_id, identifier);
$(document).on("change", "#postFilter", function(e) {
e.preventDefault ();
$.GetPostFeed(user_id, identifier);
});
});
jQuery.getPostFeed = function getPostFeed(user_id, identifier) {
console.log("Function Called");
}
}(jQuery));
当我第一次加载页面时,GetPostFeed函数成功执行但是当我执行onchange事件时,我收到以下错误:
Uncaught TypeError: undefined is not a function
错误指向更改事件中的GetPostFeed函数调用。
知道为什么会这样吗?
谢谢, -Paul
答案 0 :(得分:1)
发现Matt指出的问题。 jquery区分大小写。谢谢马特
答案 1 :(得分:0)
将函数定义为表达式时,参数会立即跟随function
关键字。尝试更改
jQuery.getPostFeed = function getPostFeed(user_id, identifier) {
到
jQuery.getPostFeed = function(user_id, identifier) {
答案 2 :(得分:0)
我遇到了你的问题:
<script>
//use
$.getPostFeed(user_id, identifier);
//instead of
// $.GetPostFeed(user_id, identifier);
</script>
它只是一个按字母顺序排列的问题:使用“getPostFeed”代替“GetPostFeed”。
要么你没事。
答案 3 :(得分:-1)
如果全局使用命名空间,则必须始终使用相同的命名空间。
实施例。如果您使用$
,则应在所有地方使用相同的功能$
而不使用关键字jQuery
。
尝试以下代码:
(function ($) {
$(document).ready(function() {
var user_id = $('#user_id').val();
var identifier = $('#identifier').val();
$.getPostFeed(user_id, identifier);
$(document).on("change", "#postFilter", function(e) {
e.preventDefault ();
$.GetPostFeed(user_id, identifier);
});
});
$.getPostFeed = function getPostFeed(user_id, identifier) {
console.log("Function Called");
}
}($));