没有定义JQuery函数fn()

时间:2016-10-28 05:49:23

标签: javascript jquery html

我在项目中使用名为sumoselect.js的第三方Jquery插件。

在其中,一旦我的选择框被渲染,我附加了一个带有锚标记的div元素,并且想要处理一个点击事件。

我做了类似的事情:

            //## Create New Application Specific code
            createNew: function () {
                var O = this;
                O.optDiv.append($('<ul class="form-control"><li><div style="margin-top:4px;"><a class="ispicon ispicon_plus" style="padding-left:12px;cursor:pointer;" data-toggle="modal" data-target="#addgroup" title="Create New"> Create New</a></div></li></ul>').on('click', handleClick));
            },

            handleClick: function () {
                alert("Oh My");
            },

但是它没有定义handleClick

即使将函数置于createNew之上也会引发相同的错误。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

handleClick是调用它的对象中的一个函数,因此您应该将其更改为this.handleClick。示例如下:

&#13;
&#13;
 //## Create New Application Specific code
var foo = {
            createNew: function () {
                $('body').append($('<ul class="form-control"><li><div style="margin-top:4px;"><a class="ispicon ispicon_plus" style="padding-left:12px;cursor:pointer;" data-toggle="modal" data-target="#addgroup" title="Create New"> Create New</a></div></li></ul>').on('click', this.handleClick));
            },

            handleClick: function () {
                alert("Oh My");
            }
  }

foo.createNew();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

在上面的代码段中,您还可以使用foo.handleClick代替this.handleClick。如果this实际上引用了其他内容(例如,在事件中),这可能很方便。或者作为我最喜欢的Ben Halpern引用之一:

  

有时当我写Javascript时,我想要举起手来   说&#34;这是胡说八道!&#34;但我永远记不清楚&#34;这个&#34;指