我第一次尝试使用Javascript模块模式来组织我的代码。我理解"这个"在这里工作但无法弄清楚$(this)是如何工作的。例如,下面的代码, $(this).addClass('视频有效'); in" chooseVideo"函数,我想只为被点击的元素应用addClass。但它不起作用。有人可以给我一些建议吗?谢谢!
;(function() {
'use strict';
if (typeof window.jQuery !== 'function') {
return;
}
var $ = jQuery;
var video = {
init: function() {
this.cacheDom();
this.bindEvents();
this.render();
},
cacheDom: function() {
this.$el = $('#videoWrap');
this.$button = this.$el.find('.video');
},
render: function() {
},
bindEvents: function() {
this.$button.bind('click', this.chooseVideo.bind(this));
},
chooseVideo: function(e) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
this.$button.removeClass('video-active');
$(this).addClass('video-active');
}
};
video.init();
})();
答案 0 :(得分:2)
使用bind时,您正在更改this
因此,您需要使用事件对象来获取所点击的内容。
chooseVideo: function(e) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
this.$button.removeClass('video-active');
$(e.target).addClass('video-active');