【发布时间】:2016-08-09 21:06:56
【问题描述】:
我只是想知道这样的事情是否可以实现:
假设我在我的库中定义了一个事件回调:
var app = {
globals: {
foo: null
},
bar: function(e) {
e.preventDefault();
e.stopPropagation();
if (typeof app.globals.foo === "function") app.globals.foo(e);
},
init: function(options) {
$.extend(app.globals, options);
$(".myclass").on("click", function(e) {
app.bar(e);
});
}
};
$(document).ready(function() {
app.init({
foo: function(evt) {
alert("clicked");
console.log(evt.target);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myclass">Click Me!</div>
使用此方法,我将“.myclass”元素的点击事件数据传递给app.foo,因此将执行面向对象的方法。
TL;DR: 问题是,我可以将 foo 的范围设置为发送点击事件的对象吗?所以:
app.init({
foo: function(){
console.log(this);
}
});
将被执行为:
app.init({
foo: function(evt){
console.log(evt.target);
}
});
这样的事情可能吗?
【问题讨论】:
-
这些对你有用吗? (具体来说,
app.foo?) -
是的,它基本上可以工作。我写的代码没有经过测试,只是为了让你明白我的意思而写出来的。
-
那么请确保您发布有效代码而不是乱涂乱画。这段代码被破坏了,讨论它没有意义。
-
现在它正在运行。你可以测试一下。