2

我有几个面试问题

  1. $(function(){});和有什么区别$(document).ready(function(){});

  2. 他们每个人都有什么区别$(function(){});以及var func=function(){};如何称呼他们?

  3. 给定以下脚本

    <script language="javascript">
    $(function()
    {
       var id=$("cssID");
       //do something with your id
       //your event to be added here
    });
    </script>
    

    你怎么能添加一个事件,比如说,onmouseout这将在id?

以下是我的回答:

  1. 它们是相同的,都是在页面文档完成加载时运行

  2. 第一个是自动调用的,第二个是通过命名引用调用的;也就是说func.called(),例如。

  3. 像这样的东西:

    $(function()
    {
        var id=$("cssID");
        //do something with your id
        //Oki
        id.onmouseout
        (function(){
          //do something
        });
    });
    

但是我的教授说我在这三个方面都错了。她解释了我不确定也不敢问的事情,她对我很生气。什么是正确的答案,为什么我的答案是错误的?

4

3 回答 3

1

这些是 jQuery(又名 jQuery DOM Ready)中通常使用的不同类型的 Document Ready 函数。许多开发人员似乎在不知道为什么的情况下使用它们。因此,我将尝试解释为什么您可能会选择一个版本而不是另一个版本。将文档就绪函数视为在页面元素加载后触发的自执行函数。

有关如何使用 Document Ready 函数的更多信息,请参阅在哪里声明您的 jQuery函数。

文档就绪示例 1

$(document).ready(function() {
    //do jQuery stuff when DOM is ready
});

文档就绪示例 2

$(function(){ 
    //jQuery code here 
});

这相当于示例 1……它们的字面意思是相同的。

文档就绪示例 3

jQuery(document).ready(function($) {
    //do jQuery stuff when DOM is ready
});

文档就绪示例 4

(function($) { 
    // code using $ as alias to jQuery
  $(function() {
    // more code using $ as alias to jQuery
  });
})(jQuery);
// other code using $ as an alias to the other library

文档就绪示例 5

$(window).load(function(){  
     //initialize after images are loaded  
});

是供您参考的链接。

于 2012-08-23T04:59:16.717 回答
0

两者之间没有区别:

$(functionValue);

和:

$(document).ready(functionValue);

所以你的教授错了。第二个例子完全不同。其中一个运行在文档就绪并且需要 jQuery;另一个只是分配给 JavaScript 变量的函数文字。

至于第三个,你可能会用on. onmouseover如果您使用 是正确get的,但并不是真正的最佳处理方式,而且您绝对不会像在那儿那样称呼它-这是完全不正确的。

id.on('mouseout', yourHandler);

或者

id.mouseout(yourHandler);
于 2012-08-23T04:50:23.897 回答
0

1.它们是相同的,都是在页面文档加载完成时运行

这对了一半。它们一样的,第一种只是写第二种的快捷方式,但是它们不会在文档加载完成时运行,它们会在 DOM 准备好时运行(此时某些资源,例如图像可能仍在加载) .

2.第一个自动调用,第二个通过命名引用调用;也就是说func.called(),例如。

又对了一半。在第一个例子中,当 DOM 按照问题 1 准备就绪时,将自动调用匿名函数。第二个例子可以用func(). 你不会.called在那里扮演角色。func或者您可以作为参数传递,例如 as $(document).ready(func)

第三季度 var id=$("cssID");

你怎么能添加一个事件,比如说,onmouseout这将在id?

$("cssID")根据匹配"cssID"选择器的数量创建一个包含零个或多个元素的 jQuery 对象。该id变量引用该 jQuery 对象。如果问题是如何将事件处理程序分配给那些匹配的元素,您可以这样做:

id.mouseout(function() { /* some code */. });
// OR
id.on("mouseout", function() { /* some code */ });

使用 jQuery 处理事件时,您不会在事件名称中使用“on”,因此它是“mouseout”而不是“onmouseout”。

所以你对 3 的回答几乎是正确的。

(请注意,除非您的文档中"cssID"有标签,否则该选择器实际上不会匹配任何元素...)<cssID>

于 2012-08-23T05:43:35.843 回答