首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义JQuery函数fn()

未定义JQuery函数fn()
EN

Stack Overflow用户
提问于 2016-10-28 13:49:23
回答 1查看 454关注 0票数 0

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

在它内部,一旦呈现了我的选择框,我附加了一个带有锚标记的div元素,并希望处理一个click事件。

我做了一些类似的事情:

代码语言:javascript
复制
            //## 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之上也会抛出相同的错误。

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-10-28 13:54:12

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

代码语言:javascript
复制
 //## 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();
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

在上面的代码片段中,您还可以使用foo.handleClick而不是this.handleClick。如果this实际上指的是其他东西,这会很方便(例如,在事件内)。或者引用Ben Halpern中我最喜欢的一句话

有时候当我在写Javascript的时候,我想举起手说:“这是胡扯!”但是我从来不记得“

”指的是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40298817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档