关于nettuts“学习jquery 30天”的四个问题

时间:2012-07-16 23:16:54

标签: jquery this init var

我正在做一个关于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(); 

})();

当您点击网站上的“与我联系”按钮时,它基本上会滑下联系表单。我的问题是:

  1. “init”的重点是什么?你需要吗?
  2. 为什么整个jquery代码都在变量中?
  3. 在代码字符串.on('click', this.show);上为什么this中需要this.show
  4. 最后,为什么你需要contactForm.container.slideDown(500);,为什么你不能只说container.slideDown(500);$('form.contact').slideDown(500);(顺便说一下,滑下来的形式的身份证是{{1} }}。

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方法。在此上下文中,thiscontactForm对象,show是作为对象传递的show函数(但未被调用)。这样做的效果是当单击按钮时,会调用show函数。

  

最后,你为什么需要contactForm.container.slideDown(500);为什么你不能只说container.slideDown(500);或$('form.contact')。slideDown(500); (顺便说一下,向下滑动的表格的ID是联系方式。

因为container是属于contactform对象的属性(即变量)。您可以执行$('#contact').slideDown(500);之类的操作,但您已在$('#contact')中引用contactform.container,并且不使用它会导致不必要的开销。