jquery基本的美元符号 - 命名与匿名

时间:2012-08-23 04:47:50

标签: javascript jquery

我有几个面试问题

  1. $(function(){});$(document).ready(function(){});

  2. 之间的区别是什么?
  3. $(function(){});var func=function(){};之间的区别是如何调用它们的?

  4. 给出以下脚本

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

    如何添加可在onmouseout上使用的id事件?

  5. 以下是我的答案:

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

    2. 第一个被自动调用,而第二个将通过命名引用调用;例如,func.called()

    3. 这样的事情:

      $(function()
      {
          var id=$("cssID");
          //do something with your id
          //Oki
          id.onmouseout
          (function(){
            //do something
          });
      });
      
    4. 但是我的教授说我三个人都错了。她解释了我不确定但不敢问的事情,她对我很生气。什么是正确的答案,为什么我错了?

3 个答案:

答案 0 :(得分:1)

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

有关如何使用文档就绪功能的详细信息,请参阅Where to Declare Your jQuery Functions

文档就绪示例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  
});

Here 是您可以参考的链接。

答案 1 :(得分:0)

之间没有区别:

$(functionValue);

$(document).ready(functionValue);

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

至于第三个,你可能会用on来做。如果您使用onmouseoverget是正确的,但实际上并不是处理事情的最佳方式,而肯定不会像在那里那样称呼它 - 那就是完全不正确。

id.on('mouseout', yourHandler);

id.mouseout(yourHandler);

答案 2 :(得分:0)

  

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

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

  

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

再来一半。在第一个中,当DOM根据问题1准备好时,将自动调用匿名函数。可以使用func()调用第二个示例。你不会在那里有.called部分。或者,您可以将func作为参数传递,例如$(document).ready(func)

  

Q3   var id=$("cssID");

     

如何添加可在onmouseout上使用的id事件?

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

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

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

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

(请注意,"cssID"是一个实际上不会与任何元素匹配的选择器,除非您的文档中有<cssID>个标记...)