JQuery

Posted 东方神话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery相关的知识,希望对你有一定的参考价值。

1.JQuery介绍

1.1.JQuery 是什么

JQuery其实就是一个javascript框架,用于简化JS的开发。

框架简单来说,可以理解为就是一组提供通用功能的工具包。

 

 

1.2.常用的JavaScript框架介绍

主流的JavaScript框架:

Dojo:重量级开发框架,功能非常强大,但是由于太大,浏览器第一次加载会很慢。

ExtJS:拥有强大的UI组件模型,CSS样式。界面很好看。

JQuery:轻量级的Javascript库,快速、简洁,灵活,文档齐全,其宗旨是——write less,do more,写更少的代码,做更多的事情。

AngularJS:一款优秀的前端JS框架,非常强大,现属于Google公司,发展前景均被业界看好。

 

1.3.为什么选择使用JQuery

(1)JQuery由于它的快速、简洁、灵活、成熟、稳定等特点,依然拥有极大的市场占有率,很多公司都在使用。

2JQuery可以做为其它JavaScript框架学习的基础。

 

1.4.JQuery学习方法

1、要学习jQuery是否需要对js非常熟悉呢?未必。两者的对象和用法基本不太相同。因此,你可以将jQuery当成一种基于js的全新技术来学习

2建议学习方法:看笔记 + 官方API 参考书籍

重点是自己理解函数用法并自行实现一些常用的功能效果。

Java的后端开发人员 来说,重点是元素的选择、赋值、取值、异步请求操作。

 

1.5.JQuery下载地址

下载地址:https://jquery.com/download/ 

国内所有版本地址:http://www.jq22.com/jquery-info122

 

注:JQuery的最新版本为3.x,但是企业中大多用1.x的老版本,因为比较稳定,兼容性高,所以在这里我们选择使用JQuery-1.x

 

JQuery开发包其实就是一个.js文件,里面有很多已经编写好的、通用的JS功能共我们来调用。

jquery-1.12.3.min.js(压缩版):将里面的回车占位符都去掉了,可读性差,但是载入浏览器速度很快,适合在项目发布运行阶段使用。

jquery-1.12.3.js(开发版):保留了代码格式化,可读性强,但是载入浏览器速度稍慢,适合在JQuery开发学习阶段使用。

 

 

2.JQuery快速入门

2.1.传统JS onload加载

【需求】

onload案例:页面加载后,加载js事件,打印弹出“HelloWorld-传统的js方式

<script type="text/javascript">
    //传统的js onload方式,页面加载完后执行
    window.onload = function() {
        alert("HelloWorld-传统的js方式");
    };
</script>

 

2.2.JQueryonload加载

【需求】

onload案例:页面加载后,加载js事件,打印弹出“HelloWorld-JQuery方式

1WebRoot目录下建立名为js的文件夹,将jquery-1.12.3.js(开发版)文件复制到刚刚建立的js文件夹中

注意:如果使用的是jquery-1.12.3.min.js(压缩版),项目会提示报错,不要紧张,这是由于MyeclispeJS检查机制过于严格所致,关闭JS自动检查机制即可解决。

 

关闭JS自动检查机制,选择菜单window-preferences

如弹出确认选择框,是询问是否重新编译检查,全部点击YES

2WebRoot目录下新建html文件,并在该文件HTML代码head标签中引入jquery

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>
注意:创建的html文件与js文件夹在同级目录

3JS一样在script标签中编写代码:

<script type="text/javascript">
    //页面加载后执行
    //jQuery()表示jquery的核心函数
    //document是dom对象
    //.ready()是表示就绪方法
    //ready()里面的参数是一个匿名的函数定义
    jQuery(document).ready(function() {
        alert(\'HelloWorld-JQuery方式\');
    });
</script>

4)运行HTML文件,如果浏览器弹出信息,则编写成功

JQuery函数别名

为了简化jQuery核心函数的编写,使用$来代替jQuery。以上代码可以简化为:

//jQuery可以用$来代替
$(document).ready(function(){ alert("HelloWorld-JQuery方式");
});

 

2.3.JQueryJavaScript onload的区别

1window.onload 不能有多个,后面的功能会覆盖前面。而jQuery(document).ready()可以存在多个

2window.onload 在页面所有元素(包括图片,引用文件)加载完后执行。而jQuery(document).ready()页面中会在所有HTML DOMCSS DOM结构加载完之后就会执行,其他图片可能还没有加载完。

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>
<script type="text/javascript">
    //js的onload
    window.onload = function() {
        alert("HelloWorld-传统的js方式1111111");
    };
    
    window.onload = function() {
        alert("HelloWorld-传统的js方式222222");
    };
    
    //jquery的onload
    $(document).ready(function(){
        alert("HelloWorld-JQuery方式11111111111");
    });
    
    $(document).ready(function(){
        alert("HelloWorld-JQuery方式2222222222");
    });
</script>
</head>
<body>
</body>
</html>

 

2.4.JQuery核心函数

2.4.1.jQuery(回调函数)

此函数的作用将callback参数以函数的定义形式,在页面onload的时候进行调用。相当于$(document).ready(callback)

回调函数:由程序自己调用,而不是我们手动调用的函数;此处是指页面加载后自动执行函数

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function(){
        alert("HelloWorld-JQuery方式");
    });
</script>

 

回顾简化过程:

jQuery(document).ready(callback);

简化为:

$(document).ready(callback)

简化为:

$(callback);

 

2.4.2jQuery(表达式)

此函数的作用是传入不同的expression(表达式),以不同的方式获取页面元素对象jQuery提供9种不同的选择器,来供我们编写表达式

【需求】

根据id查找元素,并可以获得某元素中的html内容,分别使用传统的js方式和jquery方式

提供的html代码:

<div id=\'mydiv\'>这里是div的内容</div>

<script type="text/javascript">
    //页面加载后执行
    $(function(){
        //传统的js获得页面上的元素
        var mydiv = document.getElementById("mydiv");
        //传统的js获得div中的内容
        //alert(mydiv.innerHTML);
        
        //jquery方式获得页面上的元素
        var q = $("#mydiv");
        //jquery方式获得div的内容
        alert(q.html());
    });
</script>

【相关函数】

html();  显示jQuery对象中的html内容

Html(文本内容):设置元素的文本内容

 

2.4.3.jQuery(DOM对象)

此函数的作用是将DOM对象,转换为jQuery的对象

DOM对象其实就是javascript函数对象,可以用来操作所有HTML元素。比如 :a标签是html元素documentDOM对象

【需求】

分别定义DOM对象和jQuery对象,通过instanceof 关键字分别判断它们是否是jQuery对象

提供的html代码:

<div id=\'mydiv1\'>这里是div的内容1</div>

<div id=\'mydiv2\'>这里是div的内容2</div>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //分别定义DOM对象和jQuery对象,通过instanceof 关键字分别判断它们是否是jQuery对象
        //js获得dom对象
        var mydiv1 = document.getElementById("mydiv1");
        
        //jquery获得jquery对象
        var q = $("#mydiv2");
        
        //通过instanceof 关键字分别判断它们是否是jQuery对象
        alert(mydiv1 instanceof jQuery);
        alert(q instanceof jQuery);
    });
</script>

jQuery对象其实是jQuery为了方便操作html元素而自定义的一种对象类型,类似于JavaScriptDOM对象

 

关于jQuery对象和DOM对象,需要注意的是:

(1)只有jQuery对象才能使用jQuery提供的属性和方法,并且无法使用DOM对象的属性和方法。而DOM对象只能使用DOM对象的属性和方法,无法使用jQuery提供的属性和方法。所以我们在使用jQuery的时候,往往需要先将DOM对象,转换成jQuery对象再进行使用。

【需求】

分别让jQuery对象和DOM对象使用各自的方法(比如显示div中的内容),试验它们使用对方的方法会如何?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //分别让jQuery对象和DOM对象使用各自的方法(比如显示div中的内容),试验它们使用对方的方法会如何?
        //js获得dom对象
        var mydiv1 = document.getElementById("mydiv1");
        
        //jquery获得jquery对象
        var q = $("#mydiv2");
        
        //dom对象自己的方法
        //alert(mydiv1.innerHTML);
        
        //jquery对象使用自己的方法
        //alert(q.html());
        
        //使用对方的方法
        //alert(mydiv1.html()); //出错
        //alert(q.innerHTML); //出错
    });
</script>

</head>
<body>
    <div id=\'mydiv1\'>这里是div的内容1</div>
    <div id=\'mydiv2\'>这里是div的内容2</div>
</body>
</html>

 

2DOM对象转换成jQuery对象

通过jQuery(DOM对象)核心函数进行转换,返回的结果就是jQuery对象,如:$(dom);

【需求】

将一个DOM对象转换成jQuery对象,并使用jQuery对象的方法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //将一个DOM对象转换成jQuery对象,并使用jQuery对象的方法
        //js获得dom对象
        var mydiv1 = document.getElementById("mydiv1");
    
        //将一个DOM对象转换成jQuery对象
        var q = $(mydiv1);
        
        //并使用jQuery对象的方法
        alert(q.html());
    });
</script>
</head>
<body>
    <div id=\'mydiv1\'>这里是div的内容1</div>
    <div id=\'mydiv2\'>这里是div的内容2</div>
</body>
</html>

 

3jQuery对象转换成DOM对象

jQuery对象本身可以看成是DOM对象的数组如果转换前的DOM对象的数量只有一个,可以通过jQuery对象[0] 或者 jQuery对象.get(0)来获取DOM对象。并且jQuery对象可以通过length属性或者size()方法获取元素个数

【需求】

jQuery对象转为DOM对象,并通过DOM对象的方法或属性显示其内容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>
<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //将jQuery对象转为DOM对象,并通过DOM对象的方法或属性显示其内容
//jquery获得jquery对象 var q = $("#mydiv2"); ////将jQuery对象转为DOM对象 (通过数组取索引的方式),并通过DOM对象的方法或属性显示其内容 //alert(q[0].innerHTML); //alert(q.get(0).innerHTML); //可以通过length属性或者size()方法获取元素个数 alert(q.length); }); </script> </head> <body> <div id=\'mydiv1\'>这里是div的内容1</div> <div id=\'mydiv2\'>这里是div的内容2</div> </body> </html>

【相关函数】

jQuery对象[0]jQuery对象.get(0) 获取DOM对象

jQuery对象.length属性或者size() 方法获取元素个数

4)在开发的时候,为了避免混淆DOM对象和jQuery对象,我们往往在定义jQuery对象时,为jQuery对象名加上$符号

例如:

var  变量名 =  dom对象;

var  $变量名 =  jquery对象;

 

2.4.4. jQuery(html代码)

此函数的作用是将HTML标签代码片段转换成jQuery的对象,相当于new

【需求】

html代码片段<div>html代码片段</div>转换成jquery对象 显示jquery对象的DIV内容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //将html代码片段(<div>html代码片段</div>)转换成jquery对象 显示jquery对象的DIV内容
        var $div = $("<div>html代码片段</div>");
        
        // 显示jquery对象的DIV内容
        alert($div.html());
    });
</script>
</head>
<body>
</body>
</html>

 

3.JQuery选择器

JQuery选择器可以帮助我们准确快速的选取单个或者多个HTML元素,并返回相应的jQuery对象JQuery一共提供了9种选择器。

如何选中元素?

采用的语法:

selector: 用来查找的字符串

context: 作为待查找的 DOM 元素集、文档或 jQuery 对象。

补充:context可选的,如果指定,那么就会在指定的元素下,寻找子元素。默认值:document

 

选择器是jQuery的根基,在jQuery中,对事件处理、遍历DOMAjax等各种操作都依赖于选择器。

选择器的语法可参考官方手册的章节:

 

3.1.基本选择器

基本选择器,是jquery所有选择器的基础,通过元素标签的id属性、class属性、标签名称进行选择。

如果想获取少数的标签对象,常使用基本选择器,简单方便;

3.1.1.根据id属性选择

格式:#id名称  例如:$("#mydiv") 选取了id名称为mydiv的元素

3.1.2.根据class属性选择

格式:.class名称  例如:$(".myClass") 选取了所有样式名myClass的元素

3.1.3.根据html标签名选择

格式:标签名 例如:$("div") 选取了所有的div元素

3.1.4.匹配所有元素

格式:* 例如:$("*") 选取了所有元素

3.1.5.同时选择多种元素

格式:选择器1,选择器2,选择器N 例如:$("div,p")  或者 $(".itcast,p") 将每一个选择器匹配到的元素合并后一起返回

3.1.6.基本选择器综合示例

 

【需求】
//根据id选择,如果id有多个一个,则会选取第一个
//根据样式选择,由于存在多个样式,所以返回jQuery对象,可以通过length属性或者size()方法获得数量
//根据html标签选择
//匹配所有元素
//同时选择多种元素

提供的html代码:
<div>DIVAAAA</div>
<div class="itcast">DIVBBBB</div>
<div>DIVCCCC</div>
<div>DIVDDDD</div>
<div class="itcast">DIVEEEE</div>
<div id="mao">DIVFFFF</div>
<p>PAAAA</p>
<p class="itcast">PBBBB</p>
<p>PCCCC</p>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //根据id选择,如果id有多个一个,则会选取第一个
        //alert($("#mao").html());
        
        //根据样式选择,由于存在多个样式,所以返回jQuery对象,可以通过length属性或者size()方法获得数量
        //alert($(".itcast").size());
        
        //根据html标签选择
        //alert($("div").size());
        
        //匹配所有元素
        //alert($("*").size());
       注意:“*”是指整个页面的所有标签
        
        //同时选择多种元素(去除了重复的元素)
        //alert($("div,p").size());
        alert($(".itcast,div").size());
       注意:组合选择器,同一个元素只算一个
    });
</script>

</head>
<body>
    <div>DIVAAAA</div>
    <div class="itcast">DIVBBBB</div>
    <div>DIVCCCC</div>
    <div>DIVDDDD</div>
    <div class="itcast">DIVEEEE</div>
    <div id="mao">DIVFFFF</div>
    <p>PAAAA</p>
    <p class="itcast">PBBBB</p>
    <p>PCCCC</p>
</body>
</html>

注意:如果返回的是数组,不遍历数组而直接打印,效果是只会出现数组的第一个元素;

 

3.2.层级选择器

层次选择器是根据DOM元素的层级关系,通过后代元素、子元素、兄弟元素进行选择

两个元素位置关系:祖先、后代、父元素、子元素、兄弟元素

3.2.1.选择所有后代元素(所有的儿子、孙子......

格式:元素(空格)后代元素 例如:$("form input") 选择form表单内所有input元素

3.2.2.选择所有直接子元素(所有的儿子)

格式:元素 > 子元素 例如:$("form > div ") 选择form表单的直接子元素div

3.2.3.选择紧随其后的相邻兄弟元素(第一个弟弟)

格式:元素  + 兄弟元素 例如:$("label + input") 选择label元素紧随它的input元素

3.2.4.选择所有兄弟元素(所有弟弟妹妹)

格式:元素 ~ 兄弟元素 例如:$("div ~ a") 选择div元素的所有兄弟a元素

3.2.5.层级选择器综合示例

【需求】
//1.将class属性值为itcast的元素下所有a元素字体变为绿色
//2.将class属性值为itcast的元素下直接a元素字体变为蓝色
//3. 将div元素紧随其后的兄弟a元素,字体变为20px 并且变为粗体
//4.将div元素后所有兄弟a元素,字体变为黄色,大小变为30px


提供的html代码:
<div class="itcast">
        0、div
        <a>1、div的link</a>
        <p>
            2、div的p
            <a>3、p的link</a>
        </p>
    </div>
    <a>4、link</a>
    <p class="itcast">
        <a>5、p的link</a>
    </p>
    <a>6、link</a>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        //1.将class属性值为itcast的元素下所有a元素字体变为绿色
        $(".itcast a").css("color","green");
        
        //2.将class属性值为itcast的元素下直接a元素字体变为蓝色
        $(".itcast>a").css("color","blue");
        
        //3. 将div元素紧随其后的兄弟a元素,字体变为20px 并且变为粗体
        $("div+a").css({"font-size":"20px","font-weight":"bold"});
        
        //4.将div元素后所有兄弟a元素,字体变为黄色,大小变为30px
        $("div~a").css({"color":"yellow","font-size":"30px"});
        
    });
</script>
</head>
<body>
    <div class="itcast">
        0、div <a>1、div的link</a>
        <p>
            2、div的p <a>3、p的link</a>
        </p>
    </div>
    <a>4、link</a>
    <p class="itcast">
        <a>5、p的link</a>
    </p>
    <a>6、link</a>
</body>
</html>

【相关函数的使用】

css()函数的两种用法:添加样式的作用

设置一个样式用:css(“属性名”,”属性值”)

设置多个样式用:css({“属性名1”:”属性值1”, “属性名1”:”属性值1”…})

 

3.3.过滤选择器

过滤选择器的作用主要是通过特定的过滤规则筛选出所需要的DOM元素

过滤选择器通常是对基本选择器和层次选择器的结果进行过滤(缩小选择范围)也可以单独使用。

过滤选择器基本语法:(九大选择器中剩下的七种都是过滤选择器)

通过 ":" 添加过滤条件

 

3.3.1.基本过滤选择器

基本过滤选择器是过滤选择器中用的最多的一种,它的过滤规则主要体现在元素的位置(索引)上及一些特定的元素

1)基本过滤选择器规则:

 (2)示例


【需求】
// 1.设置表格第一行,显示为红色
// 2.设置表格除第一行以外 显示为蓝色
// 3.设置表格奇数行背景色 黄色
// 4.设置表格偶数行背景色 绿色
// 5.设置页面中所有标题 显示为灰色
// 6.设置页面中默认div背景绿色,正在执行动画效果div背景黄色

提供的html代码:

<h1>表格信息</h1>
    <h2>这是一张商品表</h2>
    <table border="1" width="600">
        <tr>
            <th>商品编号</th>
            <th>商品名称</th>
            <th>售价</th>
            <th>数量</th>
        </tr>
        <tr>
            <td>001</td>
            <td>冰箱</td>
            <td>3000</td>
            <td>100</td>
        </tr>
        <tr>
            <td>002</td>
            <td>洗衣机</td>
            <td>2000</td>
            <td>50</td>
        </tr>
        <tr>
            <td>003</td>
            <td>热水器</td>
            <td>1500</td>
            <td>20</td>
        </tr>
        <tr>
            <td>004</td>
            <td>手机</td>
            <td>2188</td>
            <td>200</td>
        </tr>
    </table>

    <br />

    <div>11111111111111111111111111111111111111111111111111111
        1111111111111111111111111111111111111111111111111111111111
        1111111111111111111111111111111111111111111111111111111111
        1111111111111111111111111111111111111111111111111111111111
        1111111111111111111</div>

    <br />

    <div>222222222222222222222222222222222222222222222222222222222222
        22222222222222222222222222222222222222222222222222222222222222222
        2222222222222222222222222222222222222222222222222222222222222222222
        2222222222222222222222222222222222222222222222222222222222222
        22222222222222222</div>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

<!-- 引入jquery开发包 -->
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>

<script type="text/javascript">
    //页面加载后执行
    $(function() {
        // 1.设置表格第一行,显示为红色
        //$("table tr:first").css("color","red");
        //$("table tr:eq(0)").css("color","red");
        $("table tr:lt(1)").css("color","red");
        
        // 2.设置表格除第一行以外 显示为蓝色
        $("table tr:not(\'table tr:first\')").css("color","blue");
        
        // 3.设置表格奇数行背景色 黄色
        $("table tr:odd").css("background-color","yellow");
        
        // 4.设置表格偶数行背景色 绿色
        $("table tr:even").css("background-color","green"

以上是关于JQuery的主要内容,如果未能解决你的问题,请参考以下文章

markdown 在WordPress中使用jQuery代码片段

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

很实用的JQuery代码片段(转)

几个有用的JavaScript/jQuery代码片段(转)

几个非常实用的JQuery代码片段

高效Web开发的10个jQuery代码片段