yuv*_*uvi 4 javascript jquery this
我正在编写一个jQuery插件,$.proxy在将事件附加到函数时,我会使用它来保持上下文.像这样的东西:
function myPlugin(element) {
this.element = $(element);
}
$.extend(myPlugin.prototype, {
init: function() {
this.btns = this.element.find('.control-btns');
this.register_events();
},
register_events: function() {
this.btns
.off('click.myplugin')
.on('click.myplugin', $.proxy(this.foo, this));
},
foo: function(e) {
this.bar();
var btnClicked = $(e.target);
},
bar: function() {
// some code here
}
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在运行时foo我需要有正确的上下文this才能调用该bar函数(这只是为了示例,我做的不仅仅是调用一个特定的函数).
但是,我还需要另一个 this - 表示单击按钮的那个.我认为e.target已经足够了,但事实证明它捕获了被点击的东西,而不是带有事件监听器的元素 - 即如果我的按钮有一些内部区域(比如一个跨度),点击它会传播,但随后e.target会指向对<span>代替<button>.我做了一个小型演示,展示了这个问题.
我怎样才能传递正确的this背景,而不会丢失我本来会得到的那个?
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |