//
$(function(){alert("jQ_1");});
//
$(document).ready(function(){alert("jQ_2");});这两种方法页面载入后都能执行,请问在深层次有什么区别?
刚开始使用jQ,请大虾解答,多谢~~~

解决方案 »

  1.   

    前面是简写
    更多Jquery问题和解答
      

  2.   

    当然回答不对啦,我还是知道有不同的,只是理解的不太透彻,
    $(function(){alert("jQ_1");}); 这句是浏览器读到以后立即执行,
    $(document).ready(function(){alert("jQ_2");}); 这句是注册了一个回调函数,DOM树载入完成以后去执行回调。
    如果把这两种调用里面的alert()换成取DOM节点,就看出不同了,
    前者,如果放在<head>标签以前的话,根本取不到DOM节点,因为浏览器读到那一句的时候<body>还没建立呢。
    但是后者,不论放在哪,应该都能取到DOM节点,因为是注册了回调函数,不是立即执行。
    ---
    昨天看了点书,暂时理解到这程度,还没时间测试呢,欢迎讨论~
      

  3.   

    $(xxx).ready当xxx加载完成时候执行
    $(function)当document加载完成执行
      

  4.   

    试一试就好了!好实话我昨晚就看到了一直也以为是简写!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" charset="UTF-8" src="system/js/jquery.js"></script>
    <title>Untitled Document</title>
    <script type="text/javascript">
    $(function(){
    $("#menu li[class='h1']").css("color","red");
    });
    </script>
    </head><body><ul id="menu">
    <li id="img_1" class="h0">1</li>
    <li id="img_2" class="h1">2</li>
    <li id="img_3" class="h0">3</li>
    <li id="img_4" class="h1">4</li>
    <li id="img_5" class="h0">5</li>
    </ul>
    <script type="text/javascript">
    $(document).ready(function(){
    $("#menu li[class='h0']").css("display","none");
    });</script>
    </body>
    </html>
      

  5.   

    啊,不好意思,我错了~
    -
    我昨天问的是 $(function(){...});
    这个确实是 $(document).ready(function(){...}); 的缩写形式。
    但是 $(alert("abc")); 这个是立即执行的,
    我没看清楚,搞混了,鄙视我吧~
      

  6.   

    楼主,这样的问题不用提出来的,楼上他们回的也不太准确。
    你可以在两个function 里设定断点,
    一运行不就全都知了吗?----问别人有试验的准吗?当然我给个结果,
    $(function(){alert("jQ_1");}); //这个是当前页面的html内容被浏览器加载马上执行
    $(document).ready(function(){alert("jQ_2");}); //这个是当document被浏览器加载马上执行
    dcoument //要慢一点,它是所有文档,Include (image,Js文件,css样式,等等)
    建议你用$(function(){alert("jQ_1");});  用户体验会好点。
      

  7.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" charset="UTF-8" src="system/js/jquery.js"></script>
    <title>Untitled Document</title>
    <script type="text/javascript">
    $(function(){
    //$("#menu li[class='h1']").css("color","red");
    alert('a');
    });</script>
    </head><body><ul id="menu">
    <li id="img_1" class="h0">1</li>
    <li id="img_2" class="h1">2</li>
    <li id="img_3" class="h0">3</li>
    <li id="img_4" class="h1">4</li>
    <li id="img_5" class="h0">5</li>
    </ul>
    <script type="text/javascript">
    $(document).ready(function(){
    $("#menu li[class='h0']").css("display","none");
    });</script>
    </body>
    </html>
    这样看head中的JS脚本在BODY中的JS脚本先前执行了(FF)
      

  8.   

    $(alert("abc"));
    这个虽然知道是立即执行了,但还是不懂为什么,
    $(...) 这个函数感觉被赋予太多含义了,
    我查手册发现有6种,都是根据参数类型不同区分的,感觉容易混淆
      

  9.   

    给大家贴个定义和用法
    当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件。由于该事件在文档就绪后发生,因此把所有其他的 jQuery 事件和函数置于该事件中是非常好的做法。正如上面的例子中那样。ready() 函数规定当 ready 事件发生时执行的代码。ready() 函数仅能用于当前文档,因此无需选择器。允许使用以下三种语法:语法 1
    $(document).ready(function)
    语法 2
    $().ready(function)
    语法 3
    $(function)参数 描述 function 必需。规定当文档加载后要运行的函数。提示和注释
    提示:ready() 函数不应与 <body onload=""> 一起使用。
      

  10.   

    不对吧,我好像不知道在哪看的,ready事件是不用等待图像加载的,onload需要等图像
      

  11.   

    网上找到的:
    页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页面包含图片等文件在内的所有元素都加载完成。