jQuery学习笔记(一)

本系列适合作为JQ的复习文档。

本章主要参考来源:绿叶学习网 - jQuery入门教程

0 简介

jQuery,JavaScript和Query(查询),是辅助JavaScript开发的库。

官网有两种库文件:

  • jquery.js(开发版) 完整无压缩,用于测试与学习
  • jquery.min.js(发布版) 高度压缩,用于实际开发

需要先将jQuery引入HTML,再进行库的调用:
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>

1 选择器

jQuery选择器跟CSS选择器非常类似。
$("选择器")

1.1 基础选择器

1.1.1 基本选择器
  • 元素选择器
    $("元素名")
    ======================
    $(function () {
    // $("div").css("color","red");
    })
    $(function(){})功能类似于JavaScript中的window.onload = function(){},也就是在文档加载完成之后执行的代码。
    写jQuery代码都在$(function(){})里面写。
    css()方法是jQuery操作CSS样式的方法,因为css()是“对象的一个方法”,所以要使用点运算符来调用它:$(“div”).css()。
  • id选择器
    $("#id名")
  • class选择器
    $(".类名")
  • 群组选择器
    $("选择器1 , 选择器2 ,……,选择器n")
  • *选择器
    $(function () {
    $("#list ").css("color","red");
    })
    在CSS中,我们常常用
    选择器来去除所有元素默认的padding和margin:*{padding:0;margin:0;}
1.1.2 层次选择器
  • 后代选择器
    $("M N")
    选取M下的所有N元素,包括子元素和其他后代元素。
  • 子代选择器
    $("M>N")
    选取M下的子元素N,不包括其他后代元素。
  • 兄弟选择器
    $("M~N")
    选取M元素后面的所有某一类兄弟元素N。
    prevAll()方法用来“向前查找兄弟元素”
  • 相邻选择器
    $("M+N")
    选取M元素后面的某一个相邻的兄弟元素N。

在实际开发中,如果想要在两两元素之间实现什么效果,会经常用到这样的技巧:如$("li+li"),使用相邻选择器,表示“选择li元素相邻的下一个li元素”。

1.1.3 属性选择器

属性 attribute
属性选择器是参考正则表达式来设计的,它使选择器具有通配符的功能。
在jQuery中,属性选择器最常见于表单操作。

selector指选择器,attr指属性(attribute),value指属性值。
$("selector[attr]") 选择包含给定属性的元素
$("selector[attr='value']") 选择给定的属性是某个特定值的元素
$("selector[attr != 'value']") 选择所有含有指定的属性,但属性不等于特定值的元素
$("selector[attr *= 'value']") 选择给定的属性是以包含某些值的元素
$("selector[attr ^= 'value']") 选择给定的属性是以某些值开始的元素(比较少用)
$("selector[attr $= 'value']") 选择给定的属性是以某些值结尾的元素(比较少用)
$("selector[selector1][selector2]…[selectorN]") 复合属性选择器,需要同时满足多个条件时使用

1.2 伪类选择器

如:link、:visited、:hover、:active这4个超链接选择器

1.2.1 简单伪类选择器;

:not(selector) 选择除了某个选择器之外的所有元素
:first或first() 选择某元素的第一个元素(非子元素)
:last或last() 选择某元素的最后一个元素(非子元素)
:odd 选择某元素的索引值为奇数的元素
:even 选择某元素的索引值为偶数的元素
:eq(index) 选择给定索引值的元素,索引值index是一个整数,从0开始
:lt(index) 选择所有小于索引值的元素,索引值index是一个整数,从0开始
:gt(index) 选择所有大于索引值的元素,索引值index是一个整数,从0开始
:header 选择h1~h6的标题元素
:animated 选择所有正在执行动画效果的元素
:root 选择页面的根元素
:target 选择当前活动的目标元素(锚点)

$("li:not(#myLi)")表示选择除了id为myLi之外的其他li元素。
$("li:first,li:last")是一个群组选择器,表示选择第一个li元素和最后一个li元素。
$("li:odd")表示选择索引值为奇数的li元素。
$(":header").css("color", "red");
1.2.2 子元素伪类选择器??

“第1类选择器不分元素类型,第2类选择器区分元素类型。”
第1类子元素伪类选择器

:first-child 选择父元素的第1个子元素
:last-child 选择父元素的最后1个子元素
:nth-child(n) 选择父元素下的第n个元素或奇偶元素,n的值为“整数|odd|even”
:only-child 选择父元素中唯一的子元素(该父元素只有一个子元素)

        $("ul li:first").css("background-color", "red");
        $("ul li:nth-child(2)").css("background-color", "orange");
        $("ul li:nth-child(3)").css("background-color", "yellow");
        $("ul li:nth-child(4)").css("background-color", "green");
        $("ul li:last").css("background-color", "blue");

上面的效果用CSS操作来得更简单
第2类子元素伪类选择器

:first-of-type 选择同元素类型的第1个同级兄弟元素
:last-of-type 选择同元素类型的最后1个同级兄弟元素
:nth-of-type 选择同元素类型的第n个同级兄弟元素,n的值可以是“整数|odd|even”
:only-of-type 匹配父元素中特定类型的唯一子元素(但是父元素可以有多个子元素)

1.2.3可见性伪类选择器;
:hidden     选取所有不可见元素
:visible    选取所有可见元素,与:hidden相反

“:hidden”选择器选择的不仅包括样式为display:none所有元素,而且还包括属性type="hidden"和样式为visibility:hidden的所有元素。

1.2.4 内容伪类选择器;

:contains(text) 选择包含给定文本内容的元素
:has(selector) 选择含有选择器所匹配元素的元素
:empty 选择所有不包含子元素或者不包含文本的元素
:parent 选择含有子元素或者文本的元素(跟:empty相反)

$("E:contains(text)")
$("p:contains(jQuery)").css("background-color", "red");
$("p:contains(jQuery)")表示选择包含“jQuery”这一个文本内容的p元素。
$(":has(selector)")
$("div:has(span)")表示选择内部含有span元素的div元素。
$("div:has(#red,#yellow)")表示选择内部含有id为red和id为yellow子元素的div元素。:has(selector)中的selector是一个群组选择器。

使用:empty选择器选择所有“没有子元素”或者“没有文本”的空元素。
$("td:empty")表示选择内部没有文本内容页没有子元素的td元素。
使用:parent选择器选择“含有子元素”或者“含有文本”的元素。:parent选择器跟:empty选择器是相反的。
$("td:parent")表示选择内部有文本内容页没有子元素的td元素。

1.2.5 表单伪类选择器;

:input 选择所有input元素
:button 选择所有普通按钮,即type="button"的input元素
:submit 选择所有提交按钮,即type="submit"的input元素
:reset 选择所有重置按钮,即type="reset"的input元素
:text 选择所有单行文本框
:textarea 选择所有多行文本框
:password 选择所有密码文本框
:radio 选择所有单选按钮
:checkbox 选择所有复选框
:image 选择所有图像域
:hidden 选择所有隐藏域
:file 选择所有文件域

$("input:checkbox").attr("checked","checked");

$("input:checkbox")表示选择所有复选框元素,attr("checked","checked")表示设置复选框的checked属性值为checked。

1.2.6 表单属性伪类选择器

:checked 选择所有被选中的表单元素,一般用于radio和checkbox

option:selected 选择所有被选中的option元素
:enabled 选择所有可用元素,一般用于input、select和textarea
:disabled 选择所有不可用元素,一般用于input、select和textarea
:read-only 选择所有只读元素,一般用于input和textarea
:focus 选择获得焦点的元素,常用于input和textarea

var a = $("input:checked").val();

$("input:checked").val()表示选择“被选中”的单选框或复选框(因为只有单选框和复选框有checked属性),并且获取表单元素的value值。
val()方法用于获取表单元素的value值;
jQuery这些选择器是参考CSS3选择器来的.

2 对元素的操作

有3种操作。

2.1 属性操作

2.1.1 获取元素属性;
  $("元素名").attr("属性名")

会返回该元素的这个属性值。

2.1.2 设置元素属性;
$("元素名").attr("属性","属性值")

会在该元素添上该属性。
在实际开发中,我们很多时候需要使用jQuery来为某些元素添加一些属性。
可以使用prop()方法来获取和设置元素属性;
attr()方法用于操作元素的固有属性(元素本身具有的属性,如a标签的href、target、title等);
prop()方法用于操作元素的自定义属性(用户自己定义的一些属性)。

2.1.3 删除元素属性;
 $("a").removeAttr("title");

使用removeAttr()方法把a标签的title属性删除。

2.2 内容操作

html()和text()用于操作普通标签,val()用于操作表单标签。

2.2.1 html()和text()
$("选择器").html()              //获取HTML内容
$("选择器").html("HTML内容,即HTML的语句");   //设置HTML内容

跟JavaScript中的innerHTML效果相同。
$().text() //获取文本内容
$().text("文本内容") //设置文本内容
跟JavaScript中的innerText效果相同
JavaScript中的innerText属性并不能在Firefox浏览器下运行,而jQuery的text()方法支持所有的浏览器。

2.2.2 val()
$().val()                  //获取表单元素
$().val("表单元素的值")    //设置表单元素

表单元素的值都是通过自身的value属性来传递的。因此不能用html()和text()这两种方法来获取元素的内容(值),而要用val()来获取或设置“表单元素”的值。

2.3 样式操作

使用jQuery操作元素样式,当样式比较少时,建议使用“CSS属性操作”;当样式比较多时,建议使用“CSS类名操作”。

2.3.1 CSS属性操作
$().css("属性") //获取属性值
$().css("属性","属性值") //设置单个CSS属性
$().css({"属性1":"属性值1","属性2":"属性值2",……}) //设置多个CSS属性设置多个CSS属性的 “键值对”的形式,跟JSON数据格式、JavaScript对象的属性形式是非常相似的;也可以用这种方式为元素设置单个CSS属性。
2.3.2 CSS类名操作
$().addClass("类名") //添加类名
$().removeClass("类名") //删除类名
$().toggleClass("类名") //添加或删除类名

当需要使用jQuery为某些元素设置太多的CSS样式时,如果使用css()这个方法,jQuery里面的代码会显得比较臃肿。因此,我们更倾向于先在CSS代码中定义一个类,在这个类中定义相应的CSS代码,然后再使用jQuery对这个类名进行相应的添加、删除、切换,从而达到对样式进行批量操作。
toggleClass()方法用于检查元素是否具有某个类名。如果类名不存在,则为该元素添加类名;如果类名已存在,则为该元素删除类名。

2.3.3 非.css方法
  • 元素的宽度高度width()和height()
    $().width() //获取元素的宽度,是一个不带单位的数字
    $().width(n) //设置元素的宽度,n是一个整数,表示npx,不带单位
    $().height() //获取元素的高度 可用于window或document对象。
    $().height(n) //设置元素的高度 可用于window或document对象。
  • 元素的位置offset()和position()
    $().offset().top //获取元素相对于当前文档“顶部”的距离。
    $().offset().left //获取元素相对于当前文档“左部”的距离。
    $().position().top //表示元素相对于被定位的祖辈元素的顶部的垂直距离。
    $().position().left //表示元素相对于被定位的祖辈元素的左部的水平距离。
    在web应用开发中,获取元素的坐标是非常常见的操作。jQuery的offset()和position()的结合使用,方便我们快速获取元素坐标。
  • 滚动条的距离scrollTop()和scrollLeft()
    $().scrollTop() //获取滚动距离
    $().scrollTop(value) //设置滚动距离
    scrollLeft()方法的用法跟scrollTop()方法一样。
    我们常见到的回顶部特效、下拉固定特效等,其实就跟这个技巧有关。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容