jQuery作为一个JavaScript函数库,极大地简化了JavaScript 编程。

什么是 jQuery ?

通俗的话来讲的话:jQuery是一个轻量级的"写的少,做的多"的JavaScript库。

它包含但不仅限于以下功能:

  • HTML 元素选取
  • HTML 元素操作
  • CSS 操作
  • HTML 事件函数
  • JavaScript 特效和动画
  • HTML DOM 遍历和修改
  • AJAX

为什么使用 jQuery ?

目前网络上有大量开源的 JS 框架, 但是 jQuery 是目前最流行的 JS 框架,而且提供了大量的扩展。

兼容性

jQuery 版本 2 以上不支持 IE6,7,8 浏览器。如果需要支持 IE6/7/8,可以使用1.9版本。

如何引入jQuery?

只需要在你的代码中,像引入其他js文件一样即可。当然你可以选择下载jQuery文件,然后引入,又或者使用提供的CDN进行引入。

// 本地文件 
<head>
<script src="jquery-1.10.2.min.js"></script>
</head>


// 百度CDN
<head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

其他的静态资源CDN如:

http://cdn.code.baidu.com     // 百度的,版本较老
http://www.bootcdn.cn/jquery/     // 国内其他CDN站,版本较新

用CDN的优势时,如果用户访问的其他站点,已经保存了对应的资源,那么访问我们网站就可以直接使用缓存了。

jQuery的使用

鉴于jQuery是一个javascript的类库,它内部封装了很多javascript的操作,接下来的基本使用,会结合这javascript,对javascript不熟的请查看上一篇javascript基础。

在javascript中,我们主要的操作逻辑是查找标签,然后对其做一些函数或者参数的绑定,以及动态效果。所以在javascript存在一个标签的DOM对象,就是我们通过document.getElementXXXX找到的标签对象。

在jQuery中是一样的逻辑,只不过jQuery整体做了一个封装,在页面上,使用jQuery关键字或者使用$,表示使用jQuery对象($ == jQuery)。

// javascript
var tag = document.getElementById('id1')

// jQuery
var tag = $('#id1') 或者  jQuery('#id1')

PS:jQuery是javascript的封装,所以说,它俩是可以互相转换的。

// jQuery      -->  javascript
$('id1')[0]

// javascript  -->  jQuery
var d = document.getElemetById('id1')
$(d)

根据上面的例子得知,jQuery查找到的东西,比javascript要更多一些。

标签的查找

可以说jQuery封装的标签查找,和css的标签查找很像,只需要在$()添加选择器即可。

常用的标签查找

$('.class')           // 按照class查找
$('#id')              // 按照id查找
$('tagname')          // 按照标签名查找
$('a,.class')         // 组合选择器,只需要用逗号隔开即可
$('#id tagname')      // 查找目前标签的子孙中包含,标签类型是tagname的标签
$('#id > child')      // 在目标标签中,只查找儿子标签
$('#id + next')       // 目标标签的下一个标签
$('#id ~ siblings')   // 目标标签的之后的所有兄弟标签(同级)

常用的组合筛选器

$('a:first')     // 找到的标签中的第一个
$('a:last')      // 找到的a标签的最后一个,前面可以是任意标签选择器

// 根据上面的例子可以得知,筛选器就是在标签后面使用:分割,然后添加一些筛选的功能
:even            // 表示奇数的标签
:odd             // 表示偶数的标签
:eq(index)       // 使用索引进行过滤,索引值从0开始 (有些方法索引并不是从0开始的)
:lt(index)       // 索引小于多少的,不包含index本身
:gt(index)       // 索引大于多少的,不好含index本身

常用属性选择器

$('[属性]')        // 查找所有具有属性名的标签
$("[属性='值']")   // 根据属性对应的值进行查找
$("a[属性='值']")  // 查找a标签中属性对应的值的标签,可以组合其他类型的选择器

表单选择器

$(':input')         // 查找form中 所有的input标签
$(':text')          // 其他的类似
$(':password') 
$(':radio')
$(':checkbox')
$(':image')
$(':file')
$(':button')

表单对象属性

$(':enabled')      // 具有enabled属性的标签,input默认的属性,表示可以编辑
$(':disabled')     // 具有disabled属性的标签,input的属性,表示不可以编辑
$(':checked')      // 具有ckecked属性的表壳,比如checkbox默认的选中
$(':selected')     // 具有selected属性的标签,比如select的默认选中

筛选器

对查找到的标签进行二次筛选等

PS:jQuery支持链式调用,即可以在一行中组合多个筛选器或者赋值操作等。简而言之就是可以一直点下去。

过滤

eq(index|-index)     // 筛选索引等于几的标签,和前面说的:eq() 没有实质上的区别,要说有,就是写法不同而已。
first()              // 查找出来的第一个标签
last()               // 最后一个标签
hasClass(class)      // 筛选具有class的标签

例子:

$('.header').last()     // last的括号里面不能加额外的选择器
$('.header').first()    // 同上

筛选

children([expr])      // 所有的孩子标签
find(e|o|e)           // 在孩子中查找某一个标签
next([expr])          // 查找到标签的下一个标签
nextALL([expr])       // 查找到标签的下面的所有标签,同级别
nextUntil([expr])     // 查找到标签的下面直到某个标签
parent([expr])        // 查找到的标签的父亲
parents([expr])       // 嵌套时的所有父亲标签,默认到html
parentsUntil([expr])  // 嵌套时的所有父亲标签直到某个标签
prev([expr])          // 查找到标签的上一个标签
prevALL([expr])       // 查找到标签的上面的所有标签,同级别
prevUntil([expr])     // 查找到标签的上面的直到某个标签
siblings([expr])      // 查找到标签的所有兄弟标签
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .menu {
 8             border: 1px red solid;
 9             width:300px;
10             height: 600px;
11         }
12         a{
13             display: block;
14         }
15         .header{
16             background: darkgray;
17         }
18         .hide {
19             display: none;
20         }
21     </style>
22 </head>
23 <body>
24     <div class="menu">
25         <div class="item">
26             <div class="header">菜单1</div>
27             <div class="content">
28                 <a href="#">1</a>
29                 <a href="#">1</a>
30                 <a href="#">1</a>
31             </div>
32         </div>
33         <div class="item">
34             <div class="header">菜单2</div>
35             <div class="content hide">
36                 <a href="#">2</a>
37                 <a href="#">2</a>
38                 <a href="#">2</a>
39             </div>
40         </div>
41         <div class="item">
42             <div class="header">菜单3</div>
43             <div class="content hide">
44                 <a href="#">3</a>
45                 <a href="#">3</a>
46                 <a href="#">3</a>
47             </div>
48         </div>
49     </div>
50 
51     <script src="jquery-3.1.1.js"></script>
52     <script>
53         $('.header').click(function () {   // 不用进行循环,jQuery在内部会循环的绑定事件
54             $(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide');  // 链式操作
55         })
56     </script>
57 
58 </body>
59 </html>
左侧菜单(链式操作)

相关文章: