我是靠谱客的博主 辛勤季节,最近开发中收集的这篇文章主要介绍java改变this指向_$.on()方法和addEventListener改变this指向,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

jQuery $.on()方法和addEventListener改变this指向

标签(空格分隔): jQuery JavaScript

jQuery $.on()

jq的绑定事件使用$([selector]).on([types], [selector], [data], [fn], [one])方法;解绑事件使用off,但是解绑具体事件时候handler只能是具名函数。

在一个对象中,当我们想要在具名函数中用this访问当前对象的属性,可以从[data]参数传入,然后在具名函数中通过e.data来访问:

var obj = {

options: { a: 1 },

init: function() {

$(window).off('click', this._event);

$(window).on('click', { self: this }, this._event);

},

_event: function(e) {

var self = e.data.self;

console.log(self.options);

}

};

1. 通过bind(this)方法

var Foo = function (ele) {

this.name = 'This is foo';

this.onclickA = function (e) {

console.log(this.name); // undefined

};

this.onclickB = function (e) {

console.log(this.name); // This is foo

};

ele.addEventListener('click', this.onclickA, false);

ele.addEventListener('click', this.onclickB.bind(this), false);

};

new Foo(document.body);

2. 通过定制的函数handleEvent去捕获任意类型

var Bar = function (ele) {

this.ele = ele;

this.name = 'This is bar';

this.handleEvent = function (e) {

console.log(this.name);

switch (e.type) {

case 'click':

console.log('Trigger click...');

break;

case 'dblclick':

console.log('Trigger dblclick...');

break;

}

};

ele.addEventListener('click', this, false);

ele.addEventListener('dblclick', this, false);

};

Bar.prototype.remove = function () {

// 你也可以移除这些监听事件

this.ele.removeEventListener('click', this, false);

this.ele.removeEventListener('dblclick', this, false);

};

var bar = new Bar(document.body);

bar.remove();

3. 给EventListener传递一个函数,调用想要访问对应作用域对象的方法

但是这样做绑定的事件成为了匿名函数,是不能取消绑定的。

class SomeClass {

constructor() {

this.name = 'This is a class';

}

register() {

const that = this;

window.addEventListener('keydown', function (ev) { return that.foo(ev); });

}

foo(e) {

console.log(this.name);

switch (e.keyCode) {

case 65:

console.log('a');

break;

case 13:

console.log('enter');

break;

}

}

}

const obj = new SomeClass();

obj.register();

最后

以上就是辛勤季节为你收集整理的java改变this指向_$.on()方法和addEventListener改变this指向的全部内容,希望文章能够帮你解决java改变this指向_$.on()方法和addEventListener改变this指向所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部