0
我正在尝试采用'最佳实践'来编写Javascript,特别是编写模块。我现在正在重构一段代码,但在jquery选择器中遇到了一些问题。混淆模块和重构JS/jQuery
第一个(难看的)代码正如我所料。但是,模块上的点击事件并未触发,似乎选择器没有正确分配。
任何关于语法,组织或一般抽象哲学的建议将不胜感激。更重要的是,我在模块中做了什么错误?
// Messy jQuery
$(function() {
$div1 = $('#div1');
$div2 = $('#div2');
$button = $('#button');
$('#button').click(function() {
$div1.fadeOut();
$div2.fadeIn();
})
});
// Attempted Module
(function(){
var interface = {
init: function() {
this.cacheDom();
this.bindEvents();
},
cacheDom: function() {
this.$div1 = $('#div1');
this.$button = this.$div1.find('button');
this.$div2 = $('#div2');
},
bindEvents: function() {
this.$button.on('click', this.swapDiv.bind(this));
},
swapDiv: function() {
this.$div1.fadeOut();
this.$div2.fadeIn();
}
}
interface.init();
})()
<div id="div1">
<button id="button">Swap Div</button>
</div>
<div id="div2">
<p>Lorem Ipsum</p>
</div>
感谢您的答复。嗯,这很有趣,因为它不适合我的铁轨学生项目。很高兴知道代码正在工作,似乎只是一个资产加载问题。 –
刚醒来,最后吸收了你在说的话。你说得对,谢谢你的帮助。 –
@JoelB很高兴听到这个消息 –