我在我的项目中使用了一个名为sumoselect.js的第三方Jquery插件。
在它内部,一旦呈现了我的选择框,我附加了一个带有锚标记的div元素,并希望处理一个click事件。
我做了一些类似的事情:
//## 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之上也会抛出相同的错误。
我错过了什么?
发布于 2016-10-28 13:54:12
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();<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
在上面的代码片段中,您还可以使用foo.handleClick而不是this.handleClick。如果this实际上指的是其他东西,这会很方便(例如,在事件内)。或者引用Ben Halpern中我最喜欢的一句话
有时候当我在写Javascript的时候,我想举起手说:“这是胡扯!”但是我从来不记得“
”指的是什么。
https://stackoverflow.com/questions/40298817
复制相似问题