JQuery 无废话系列教程(二) jquery实战篇上


Posted in Javascript onJune 23, 2009

我知道大家的想法, 放心好了,有些东西是不需要太多的理论知道做为基础, 其实在我们已经掌握JavaScript时,就已经掌握了JQuery的理论知识. 还是入门篇所说的那样,其实JQuery很简单. : )
在我们开始学习之前建议大家先去下载JQuery1.3中文参考. 下载地址
https://3water.com/books/17812.html

好了,进入正题. 再次申明JQuery很简单,take easy!

    从那开始呢? 最好的切入地方就从 ready 函数开始!

    定义

    ready(fn);

    功能    

    这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。

    简单地说,这个方法纯粹是对向window.load事件注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪能够读取并操纵时立即调用你所绑定的函数,而99.99%的JavaScript函数都需要在那一刻执行。

    有一个参数--对jQuery函数的引用--会传递到这个ready事件处理函数中。可以给这个参数任意起一个名字,并因此可以不再担心命名冲突而放心地使用$别名。

    请确保在 元素的onload事件中没有注册函数,否则不会触发$(document).ready()事件。

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

     通过上面所述,我们可以把ready看做onLoad的替代方法. 这时有的朋友就会问了,有onLoad方法我们干什么还要用ready方法? 

     我个人的体会及看法是 onLoad缺点是以后维护起来麻烦,到处都是JavaScript代码,很容易出问题的哟! 在<<ppk谈JavaScript>>中,ppk针对这个问题的看法也是如此,尽量不要在标签中直接编写JavaScript 代码.

     实例

     两种编写方式

     一

     $(document).ready(function(){alert("Hello World!");});

     二

     var myFun = function(){alert("Hello World!");}

     $(document).ready(myFun);

    

     到这儿我想大家对ready的用法应该是明白了,但对前面的 $(document)应该很迷惑. 这是什么东东?别急... 现在只要记住这段代码的功能就是当整个文档载入完毕后再执行ready内的函数就够了.

     看完下面的代码我们就明白了$()的用法.

     index.html代码结构如下:

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>JQuery测试</title>

    <style type="text/css">

        .p1 {
            background: #ff0000;
        }

        .p2 {
            background: #00ff00;
        }

        .p3{

            background: #0000ff;

        }

        .myPCss{

            font-size:36px;

        }        
    </style>

    <script language="javascript" src="jquery-1.3.2.js">
    </script>
    <script language = "JavaScript" type="text/javascript">
        //<![CDATA[
        $(document).ready(function(){
            $("p").addClass("p1");
            $("p").removeClass("p1");

            $("#myP").addClass("p2");

            $(".myPCss").addClass("p3"); 

           

            $("#myDiv  p").addClass("p3");

            $("#myDiv>p").addClass("p3");

            $("div+p").addClass("p3");

            $("div~p").addClass("p3");

            var aP = document.getElementById("myP");

            $(aP).addClass("p2");

        });
        //]]>
    </script>
</head>
<body>

  <p>快购利众网1</p>

  <p id="myP">快购利众网2</p>

  <p class="myPCss">快购利众网3</p>

  <div id="myDiv">

       <div id="myDivInner">

           <p>快购利众网4</p>

       </div>

       <div id="myDivTemp">

       </div>

       <p>快购利众网5</p>

       <p>快购利众网6</p>

   </div>

   <p>快购利众网7</p>
</body>
</thml>

 代码解析: 

    $("p").addClass("p1");
    $("p").removeClass("p1");

    $("#myP").addClass("p2");

    $(".myPCss").addClass("p3");

    $("#myDiv  p").addClass("p3");

    $("#myDiv>p").addClass("p3");

    $("div+p").addClass("p3");

    $("div~p").addClass("p3");

    

    var aP = document.getElementById("myP");

    $(aP).addClass("p2");

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    $("p").addClass("p1");

    $("p").removeClass("p1"); 

    选择文档里全部的<p>元素对象,不论<p>在文档中所处的层次结构如何, 最后选到了7个<p> 元素对象 "<p>快购利众网1</p><p id="myP">快购利众网2</p><p class="myPCss">快购利众网3</p><p>快购利众网4</p><p>快购利众网5</p><p>快购利众网6</p><p>快购利众网7</p>"

     addClass("css name")函数很简单,就是为前面$()选择到的元素对象增加CSS样式.

     removeClass("css name")函数也很简单,就是去掉前面$()选择到的元素对象的指定的样式.

      在这儿,这两段代码功能抵消,相当什么也没做.

    

     $("#myP").addClass("p2"); 

     选择文档里id为"myP"的指定元素对象,并为该元素对象增加名称为"p2"的样式. 最后选到了1个<p>元素对象 "<p id="myP">快购利众网2</p>"

      知识点: 如果要选择指定ID号的元素对象,记得前面用"#"

     $(".myPCss").addClass("p3"); 

      选择文档里样式名为"myPCss"的指定元素对象,并为该元素对象增加名称为"p3"的样式. 最后选到了1个<p>元素对象 "<p class="myPCss">快购利众网3</p>"

      知识点: 如果要选择指定样式的元素对象,记得前面用".

      现在可以为大家正式介绍$(),在JQuery里,我们称她为"选择器函数",里面的内容称为"选择器".

      现在大家自己试试,记住选择器选择出的对象有可能是多个哟.

      上面的内容是不是挺简单的!! 嗯,革命才刚刚开始,下面的内容稍稍复杂些因为牵涉到层次的概念,但大家别急,只要记住"选择器"选择出的元素对象可能是多个这点就不用怕了.

    

     $("#myDiv  p").addClass("p3");    

    功能:在给定的祖先元素下匹配所有的后代元素

     分成两部分来分析 

      一,$("#myDiv") 根据上面所学的知识,选择出1个<div>元素对象, "<div id="myDiv">"

      二,$("#myDiv  p") 在上面2个<div>元素对象中的任意层选择<p>元素对象. 几个? 3个 "<p>快购利众网4</p><p>快购利众网5</p><p>快购利众网6</p>"

      其中"<p>快购利众网4</p><p>快购利众网5</p><p>快购利众网6< /p>"都是在"<div id="myDiv"></div>"内部定义的

      虽然"<p>快购利众网4</p>"是在id为"myDivInner的"div"内部定义的.但因为id 为"myDivInner的"div" 也是id为"myDiv的下层,所以"<p>快购利众网5</p>"也属于id为"myDiv的下层. 有些绕口,记住一点就行. A,B操作器中如果是用空格连接,那么表示B属于A的下层(可以为任意层)之中

      最后为这3个<p>元素对象增加名为"p3"的样式 

      知识点: 对于这类有层次的选择表达式$("A B"),A选择器和B选择器可以是"标签名","#id",".css"三种中的任意一种,中间用空格分开,空格表示任意次. 

     右边的B选择器是在左边A选择器选择的结果上进行内部任意层中选择, 记住是在左边选择出的元素对象(可能是多个)的内部进行再次选择(可能是多个). <- 这个知识点一定要理解透!

     $("#myDiv>p").addClass("p3"); 

    功能:在给定的父元素下匹配所有的子元素

    >代表#myDiv下的子元素对象(多个并只是下一层),最后选择出2个<p>元素对象,""<p>快购利众网5</p><p>快购利众网6</p>",并为该<p>对象增加名为"p3"的样式

  

    $("div+p").addClass("p3");

    功能:匹配所有紧接在 div 元素后的 第一个同辈p 元素

    +代表紧接着div同层的第一个子元素对象.

    id为"myDivInner"同层后面第一个因为是"<div>",所以后没有紧接着的"<p>"

    id为"myDiv"同层后面正好是一个"<p>"

    最后选择出1个<p>元素对象,""<p>快购利众网7</p>",并为该<p>对象增加名为"p3"的样式

    知识点: 是紧接着,如果A与B之间有其它元素都无法匹配.

    $("div~p").addClass("p3");

     功能:匹配 #myDiv 元素之后的所有同辈p 元素

     该功能与 + 类似,不同的有两处.

     一, +为同辈并且紧跟, ~为同辈不需要一定紧跟

     二, +为同辈并且第一个, ~为同辈多个.

    var aP = document.getElementById("myP");

    $(aP).addClass("p2");

    $(aP).addClass("p2") 其实就是$("#myP").addClass("p2") 的另一种形式.

    $()中处了可以用字符串的表达式选择器,还可以使用DOM对象

    

     当你能看到这句话,我想对你说"辛苦了."

     学习的过程本来就是艰辛难耐的,唯为坚持才能战胜一切.

     到现在我们应该明白之前的"$(document)"代表什么意思了吧.

     好了, 今天先讲到这儿. 要快速熟悉选择器的用法只有多加练习.更多的高级应用我相信大家都能自己学会,掌握.

     作者信息:万思杰

Javascript 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
May 26 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
Aug 08 Javascript
基于javascript实现按圆形排列DIV元素(三)
Dec 02 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
node使用Mongoose类库实现简单的增删改查
Nov 08 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 Javascript
js实现盒子移动动画效果
Aug 09 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 #Javascript
IE JS编程需注意的内存释放问题
Jun 23 #Javascript
js form 验证函数 当前比较流行的错误提示
Jun 23 #Javascript
javascript form 验证函数 弹出对话框形式
Jun 23 #Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 #Javascript
WordPress JQuery处理沙发头像
Jun 22 #Javascript
JQuery 前台切换网站的样式实现
Jun 22 #Javascript
You might like
PHP实现下载功能的代码
2012/09/29 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php命令行写shell实例详解
2018/07/19 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
用pickle存储Python的原生对象方法
2017/04/28 Python
python Pygame的具体使用讲解
2017/11/03 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
十八届三中全会学习方案
2014/02/16 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
先进学校事迹材料
2014/12/30 职场文书
毕业证明模板
2015/06/19 职场文书
新店开张宣传语
2015/07/13 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL