如何通过Javascript中的“fn”成员定义函数?

时间:2014-04-14 09:54:16

标签: javascript function

我找到了以下定义

$.fn.flex = function ( options ) {
   var p = this.data("flex"),
           opts = options || {};
   if (p) return p;
   this.each(function () {
      p = new Flex( this, opts );
      $(this).data("flex", p);
   });
   return opts.api ? p : this;
}; 

在原始代码中定义函数flex()

不幸的是,它停止在我的环境中定义此函数,即函数调用导致flex不是函数的错误。

flex作为一个函数的关键是什么?

更新

抱歉,实际上我没有修改任何东西。我只是将这个javascript https://github.com/jasonenglish/jquery-flex/放入我的环境(Liferay)和运行脚本的代码

<script type="text/javascript">
    $(function() {
        $(".flex").flex();
    });
    </script>

导致错误。所以我像以前一样将$替换为jQuery,但仍然无效。

更新2

嗯。来自Twitter的widget.js出错。说

TypeError: jQuery(...).flex is not a function

如果我将flex重命名为flex1,它会说&#34; flex1&#34;不是一个功能。

2 个答案:

答案 0 :(得分:2)

首先,$.fn.flex $fn是jQuery变量。它们不是JavaScript原生的。 jQuery提供的$.fn将方法/属性附加到jquery对象

答案 1 :(得分:2)

  

抱歉,实际上我没有修改任何东西。我只是把这个javascript ...放到我的环境(Liferay)和运行脚本的代码

因为它是一个jQuery插件,所以您需要确保在页面上 jQuery之后包含该脚本。所以

<script src="/path/to/jquery.js"></script>
<script src="/path/to/the-plugin.js"></script>

如果你把它们放在另一个顺序中,第一个脚本将会失败,因为它会尝试获取jQuery符号的值,该符号尚不存在,抛出ReferenceError (在松散和严格模式下)。