关于nettuts的四个问题“;30天学习jquery“;
我正在网上做一个免费的jQuery课程,名为Jeffrey Way的30天学习jQuery,我有四件事真的很困惑,首先是代码:关于nettuts的四个问题“;30天学习jquery“;,jquery,this,init,var,Jquery,This,Init,Var,我正在网上做一个免费的jQuery课程,名为Jeffrey Way的30天学习jQuery,我有四件事真的很困惑,首先是代码: (function() { $('html').addClass('js'); var contactForm = { container: $('#contact'), init: function() { $('<button></button>', {
(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();
})();
(函数(){
$('html').addClass('js');
var contactForm={
容器:$(“#联系人”),
init:function(){
$('', {
短信:“联系我”
})
.insertAfter('条款:第一个孩子')
.on('click',this.show');
},
show:function(){
contactForm.container.slideDown(500);
}
};
contactForm.init();
})();
当你点击网站上的“联系我”按钮时,它基本上会滑下一张联系表。我的问题是:
.on('click',this.show')的代码字符串上代码>为什么在此中需要此
。显示
contactForm.container.slideDown(500)代码>就像为什么你不能说container.slideDown(500)代码>或$('form.contact')。向下滑动(500)代码>(顺便说一下,向下滑动的表单id是联系人
init
的函数,然后调用该函数。您可以同样轻松地将这段代码移到对象之外,但这样您就无法重用它,也无法使用它做其他面向对象的事情
为什么整个jquery代码都在一个变量中
在Javascript中(不仅仅是jQuery)一切都是一个对象。函数是一个对象,对象是对象,等等。这段代码正在创建一个包含3个变量的对象:container
,它存储一个jquery对象;init
,它存储一个函数;show
,它存储一个函数。然后将此变量分配给contactform
变量
在写有.on('click',this.show')的代码字符串上;为什么在this.show中需要这个
this.show
引用了this
对象上的.show()
方法。在此上下文中this
是contactForm
对象,而show
是作为对象传递(但未调用)的show函数。其效果是单击按钮时,调用show函数
最后,为什么需要contactForm.container.slideDown(500);就像为什么不能只说container.slideDown(500)或$('form.contact').slideDown(500);(顺便说一句,向下滑动的表单的id是contact)
因为container
是属于contactform对象的属性(即变量)。您可以执行类似$('#contact')。向下滑动(500)
的操作,但您已经在contactform.container
中引用了$('#contact')
,不使用它将导致不必要的开销