我在项目中使用名为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
之上也会引发相同的错误。
我错过了什么?
答案 0 :(得分:1)
handleClick
是调用它的对象中的一个函数,因此您应该将其更改为this.handleClick
。示例如下:
//## 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;
在上面的代码段中,您还可以使用foo.handleClick
代替this.handleClick
。如果this
实际上引用了其他内容(例如,在事件中),这可能很方便。或者作为我最喜欢的Ben Halpern引用之一:
有时当我写Javascript时,我想要举起手来 说&#34;这是胡说八道!&#34;但我永远记不清楚&#34;这个&#34;指