jquery函数的全局命名空间问题

时间:2015-03-13 12:38:27

标签: javascript jquery

我在初始页面加载后从全局名称空间调用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

4 个答案:

答案 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");
  }

}($));