我正在做一个关于nettuts的免费jQuery课程,叫做Jeffrey Way学习jquery 30天,我有四件事我真的很难过,首先是这里的代码:
(function() {
$('html').addClass('js');
var contactForm = {
container: $('#contact'),
init: function() {
$('<button></button>', {
text: 'Contact Me'
})
.insertAfter('article:first-child ')
.on('click', this.show);
},
show: function() {
contactForm.container.slideDown(500);
}
};
contactForm.init();
})();
当您点击网站上的“与我联系”按钮时,它基本上会滑下联系表单。我的问题是:
.on('click', this.show);
上为什么this
中需要this.show
?contactForm.container.slideDown(500);
,为什么你不能只说container.slideDown(500);
或$('form.contact').slideDown(500);
(顺便说一下,滑下来的形式的身份证是{{1} }}。答案 0 :(得分:8)
“init”的重点是什么?你需要吗?
此代码正在创建一个javascript对象,其中包含一个名为init
的函数,然后调用该函数。您可以轻松地将此代码移动到对象之外,但之后您将无法重用它,并使用它执行其他面向对象的操作。
为什么整个jquery代码都在变量中?
在Javascript(不仅仅是jQuery)中,一切都是对象。函数是一个对象,对象是对象等。这段代码创建一个带有3个变量的对象:container
,它存储一个jquery对象; init
,存储函数;和show
存储函数。然后将其分配给contactform
变量。
在代码字符串上写着.on('click',this.show);你为什么要在this.show中使用它?
this.show
引用.show()
对象上的this
方法。在此上下文中,this
是contactForm
对象,show
是作为对象传递的show函数(但未被调用)。这样做的效果是当单击按钮时,会调用show函数。
最后,你为什么需要contactForm.container.slideDown(500);为什么你不能只说container.slideDown(500);或$('form.contact')。slideDown(500); (顺便说一下,向下滑动的表格的ID是联系方式。
因为container
是属于contactform对象的属性(即变量)。您可以执行$('#contact').slideDown(500);
之类的操作,但您已在$('#contact')
中引用contactform.container
,并且不使用它会导致不必要的开销。