zoukankan      html  css  js  c++  java
  • Jquery中"$(document).ready(function(){ })"函数的使用详解

    Jquery是优秀的Javascrīpt框架,$是jquery库的申明,它很不稳定(我就常遇上),换一种稳定的写法jQuery.noConflict(); jQuery(document).ready(function(){});

    使用jQuery的好处是它包装了各种浏览器版本对DOM对象(javascript的DOM对象你应该知道吧,就是它了)的操作.

    比如jquery写法:

    1 $("div p"); // (1)
    2 $("div.container"); // (2)
    3 $("div #msg"); // (3)
    4 $("table a",context); // (4)
    5 $("#myId"); //(5)

     第一行代码得到所有<div>标签下的<p>元素。

    第二行代码得到class 为container的<div>元素,

    第三行代码得到<div>标签下面id为msg的元素。

    第四行代码得到context为 上下文的table里面所有的连接元素。

    第五行代码得到id为myid的所有元素

    如果你熟悉CSS,你会觉得这些写法很眼熟!对了。正是。看出奥妙了吧。jquery就是通过这样的方式来找到Dom对象里面的元素。跟CSS的选择器相类似。

    现在回答你的具体问题吧

    $(document).ready(function(){
    alert("hello");
    });(1)

    html

    1 <body onload="alert('hello');">(2)

    上面两段代码是等价的。但代码1的好处是做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一个页面中重复出现,而不会冲突。基本上Jquery的很多plugin都是利用这个特性,正因为这个特性,多个plugin共同使用起 来,在初始化时不会发生冲突。

    如果我们在

    $(document).ready(function(){
    加入内容A
    });

    内容A:

    $(".btn-slide").click(function(){
              alert("你单击了a标签中class等于btn-slide的连接");
    });

     则表示当我们单击class=btn-slide的超级连接时弹出“你单击了a标签中class等于btn-slide的连接”对话框.

    如此方便易用,因此使用jquery是一个不错的选择。

    $(document).ready()使用小结

    window.onload = function(){ alert("welcome"); }

    这样的写法作用是希望在页面加载完,自动执行定义js代码(function)。

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

    这个函数是用来取代页面中的window.onload;

    document.ready()和传统的方法<body onload=”load()”> 相似

    不同的是onload()的方法是在页面加载完成后才发生,这包括DOM元素和其他页面元素(例如图片)的加载,因此,使用 document.ready() 方法的执行速度比onload()的方法要快。

     Javascript 只有在DOM元素已经定义以后才可以对其执行某种操作,

    jQuery使用document.ready来保证所要执行的代码是在DOM元素被加载完成的情况下执行。比如:

    <script type="text/javascript">
    $(document).ready(function () {
    alert("我的第一个jQuery代码!");
    });
    </script>

    这段代码的意思是:当Dom Tree加载完成后,显示警告信息。

    最后要注意两点:

    确保在 <body> 元素的onload事件中没有注册函数,否则可能不会触发$(document).ready()事件。(我尝试用下面的例子来演示这个情况,但是没有成功,所以我想这种情况只是可能发生。)

     1 <html>
     2     <head>
     3         <title>
     4             My second jQuery
     5         </title>
     6         <script type="text/javascript" src="/js/jquery.js">
     7         </script>
     8         <script type="text/javascript">
     9             //下面是load的函数含有jquery注册函数$
    10             function load() {
    11                 $("p").append("<b>Hello</b>");
    12             }
    13             //下面是jQuery的代码
    14             $(document).ready(function() {
    15                 $("p").append("我的第一个jQuery代码!");
    16                 $("p").append("<b>Hello</b>");
    17             });
    18         </script>
    19     </head>
    20     <body onload="load()">
    21         <h2>
    22             jQuery 简单例子2
    23         </h2>
    24         <p>
    25             I would like to say:
    26         </p>
    27     </body>
    28 
    29 </html>

    可以在同一个页面中无限次地使用$(document).ready()事件。其中注册的函数会按照(代码中的)先后顺序依次执行。

  • 相关阅读:
    Storm-源码分析-Stats (backtype.storm.stats)
    Storm-源码分析-Topology Submit-Task-TopologyContext (backtype.storm.task)
    Storm-源码分析-Streaming Grouping (backtype.storm.daemon.executor)
    Storm-源码分析-Topology Submit-Worker
    Storm-源码分析- Messaging (backtype.storm.messaging)
    Storm-源码分析-LocalState (backtype.storm.utils)
    Storm-源码分析- Disruptor在storm中的使用
    LMAX Disruptor 原理
    Shiro学习(7)与Web整合
    MQTT---HiveMQ源代码具体解释(十四)Persistence-LocalPersistence
  • 原文地址:https://www.cnblogs.com/endv/p/7788255.html
Copyright © 2011-2022 走看看