锋利的jQuery学习笔记


看书时随手整理的jQuery的相关内容及API,之后会将相应的功能与JavaScript进行比对整理。

jQuery选择器

  • jQuery中无法使用DOM对象的方法
    $("#foo").html() //效果等于document.getElementById("foo")

  • $("#tt")获取的永远是对象,即使网页上没有此元素

  • 基本选择器

    • $("#myDiv") //根据给定的ID选择匹配的元素,返回:单个元素
    • $(".myClass") //根据给定的样式名称选择匹配的元素,返回:集合元素
    • $("div") //根据给定的元素名称选择匹配的元素,返回:集合元素
    • $("#myDiv,div.myClass,span") //根据给定的规则选择匹配的元素,返回:集合元素
    • $("*") //选择页面所有元素,返回:集合元素
  • 层次选择器

    • $("div span") //选择所有DIV元素下的所有span元素(所有后代元素),返回:集合元素
    • $("div>span") //选择所有DIV元素下的span子元素(仅子元素),返回:集合元素
    • $(".myClass+div") //选择样式名称为myClass的下一个DIV元素,返回:集合元素
      等价于 $(".myClass")`.next("div");
    • $(".myClass~div") //选择样式名称为myClass之后的所有DIV元素,返回:集合元素
      等价于 $(".myClass")`.nextAll();
    • $(".myClass").siblings("div") //选择样式名称为myClass的元素的所有同辈DIV元素(无论前后),返回集合元素
  • 过滤选择器(index从0开始)

    • $("div:first") //选择所有DIV元素下的第一个DIV元素,返回:单个元素
    • $("div:last") //选择所有DIV元素下的最后一个DIV元素,返回:单个元素
    • $("div:not(.myClass)") //选择所有样式不包括myClass的DIV元素,返回:集合元素
    • $("div:even") //选择所有索引是偶数的DIV元素,返回:集合元素
    • $("div:odd") //选择所有索引是奇数的DIV元素,返回:集合元素
    • $("div:eq(index)") //选择所有索引等于index的DIV元素,返回:集合元素
    • $("div:gt(index)") //选择所有索引大于index的DIV元素,返回:集合元素
    • $("div:lt(index)") //选择所有索引小于index的DIV元素,返回:集合元素
    • $(":header") //选择所有标题元素(h1,h2,h3),返回:集合元素
    • $("div:animated") //选择所有正在执行去画的DIV元素,返回:集合元素
  • 内容过滤选择器

  • $(":contains(text)")//选择所有内容包含text的元素,返回:集合元素

  • $("div:empty") //选择所有内容为空的DIV元素,返回:集合元素

  • $("div:has(span)")//选择所有含有SPAN子元素的DIV元素,返回:集合元素

  • $("div:parent") //选择所有含有子元素的DIV元素(包括文本元素),返回:集合元素

  • 可见性选择器

  • $(":hidden")//选择所有不可见的元素(type="hidden" style="display:none" style="visibility:none"),返回:集合元素

  • $(":visible") //选择所有可见的元素,返回:集合元素

  • 属性过滤选择器

  • $("div[id]")选择拥有属性id的元素

  • $("div[title=test]")选择属性title为"test"的<div>元素

  • $("div[title!=test]")title不等于"test"的div

  • $("div[title^=test]")title以"test"开始的div

  • $("div[title$=test]")title以"test"结束的div

  • $("div[title*=test]")title含有"test"的div

  • $("div[title|=en]")title等于en或以en为前缀(en-data)的元素

  • $("div[title~=uk]") title用空格分隔的值中包含字符uk的元素

  • $("div[id][title$='test']")拥有属性id,且title以"test"结束的div

  • 子元素过滤选择器

    • $(":nth-child(index/even/odd/3n+1)") //选择每个父元素下的第index/偶数/奇数/索引值是3n+1的子元素
      :eq(index)只能匹配一个元素,且Index从0开始,:nth-child可以匹配多个元素,Index从1开始
    • $(":first-child")//选择每个父元素下的第一个子元素,返回:集合元素
    • $(":last-child") //选择每个父元素下的最后一个子元素,返回:集合元素
    • $("ul li:only-child") //在UL元素中选择只有一个LI元素的子元素,返回:集合元素
  • 表单对象属性选择器

    • $("#myForm:enabled")//选择ID属性为myForm的表单的所有可用元素,返回:集合元素
    • $("#myForm:disabled") //选择ID属性为myForm的表单的所有不可用元素,返回:集合元素
    • $("#myForm:checked") //选择ID属性为myForm的表单的所有所有被选中的元素,返回:集合元素
    • $("#myForm:selected") //选择ID属性为myForm的表单的所有所有被选中的元素,返回:集合元素
  • 表单选择器

    • $(":input") //选择所有<input> <select> <button> <textarea>元素,返回:集合元素
    • $(":text") //选择所有单行文本框元素,返回:集合元素
    • $(":password") //选择所有密码框元素,返回:集合元素
    • $(":radio") //选择所有单选框元素,返回:集合元素
    • $(":checkbox") //选择所有复选框元素,返回:集合元素
    • $(":submit") //选择所有提交按钮元素,返回:集合元素
    • $(":image") //选择所有图片按钮元素,返回:集合元素
    • $(":reset") //选择所有重置按钮元素,返回:集合元素
    • $(":button") //选择所有按钮元素,返回:集合元素
    • $(":file") //选择所有上传域元素,返回:集合元素
    • $(":hidden") //选择所有不可见域元素,返回:集合元素
    • $(":text") //选择所有单选文本框元素,返回:集合元素
  • <div id="id[1]">cc</div>
    获取非法的id 用\\\来转义特殊字符 $("#id\\\[1\\\]")

  • .show() .hide() 显示/隐藏匹配元素

  • .css('color','red') 设置单个样式
    .css({'color':'red','width':'15px'})设置多个样式

  • .filter(":contains('abc')")筛选指定表达式匹配的元素

  • toggleBtn.toggle(func1,func2) 交替一组动作

jQuery中的DOM操作

  • 创建节点
    var $li = $("<li title='香蕉'>香蕉</li>") 创建一个<li>元素
    $("ul").append($li) 插入文档

  • 插入节点
    append() 元素内部的尾部追加
    appendTo()append()相同,颠倒了操作
    prepend() 元素内部的首部追加
    prependTo()prepend() 相同,颠倒了操作
    after() 元素之后插入
    insertAfter()after() 相同,颠倒了操作
    before() 元素之前插入
    insertBefore()before()相同,颠倒了操作

  • 删除节点
    1.$("element").remove() 删除后其后代节点也同时被删除,绑定事件失效
    可以接受传参
    $("ul li").remove("li[title = "菠萝"]")
    2.$("element").detach() 删除节点,但不会从jQuery对象中删除,恢复后绑定事件仍可用
    3.empty()清空节点(节点存在,只是内容为空)

  • 复制节点
    .clone() 复制节点,且不具有任何行为
    .clone(true) 具有复制元素的绑定事件

  • 替换节点
    $("#pid").replaceWith("<span>苹果</span>")
    $("<span>苹果</span>").replaceAll("#pid")
    两者效果相同(操作相反)

  • 包裹节点

<strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong>
<strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong>
    <ul>
      <li title='苹果'>苹果</li>
      <li title='橘子'>橘子</li>
      <li title='菠萝'>菠萝</li>
    </ul>

1.wrap() 单独包裹
使用方法:$("strong").wrap("<b></b>")
结果:

<b><strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong></b>
<b><strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong></b>

2.wrapAll() 全部包裹
使用方法:$("strong").wrapAll("<b></b>")
结果:

<b>
    <strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong>
    <strong title="选择你最喜欢的水果." >你最喜欢的水果是?</strong>
</b>

3.wrapInner() 包裹子内容(包括文本节点)
使用方法:$("strong").wrapInner("<b></b>")
结果:

<strong title="选择你最喜欢的水果." ><b>你最喜欢的水果是?</b></strong>
<strong title="选择你最喜欢的水果." ><b>你最喜欢的水果是?</b></strong>
  • 属性操作
    .attr()获取(getAttribute和setAttribute)
    .removeAttr()移除

  • 样式操作
    .addClass()增加类
    .removeClass()移除类
    toggleBtn.toggle(func1,func2) 交替一组动作
    $("p").toggleClass("another") 类名存在则删除,类名不存在则添加
    hasClass() 等于is()操作
    .html() 获取/设置元素的HTML .innerHTML()
    .text()获取/设置元素的文本内容
    .val()设置/获取/选中元素的值 .value()

  • 遍历节点
    .children()获取子元素集合
    .next()获取下一个同辈元素
    .prev()获取上一个同辈元素
    .siblings()获取前后所有同辈元素
    .closest("li")取得最近的li元素

  • CSS-DOM操作

    • .css()获取/设置样式
    • offset()元素在当前视窗的相对偏移
      offset.left左偏移
      offset.right右偏移
    • position() 相对于最近一个position为relative或absolute的父节点的相对偏移
      position.left 左偏移
      position.right右偏移
    • scrollTop()获取/设置元素滚动条距顶端的距离
      scrollLeft()获取/设置元素滚动条距左端的距离

jQuery中的事件和动画

事件

  • $(document).ready()window.onload

    • $(document).ready()在DOM完全就绪时就可以调用,window.onload必须在网页所有元素(包括元素的关联文件)加载完成后才能执行。

    • window.onload一次只能保存一个引用,会自动用后面的函数覆盖前面的函数。
      $(document).ready()每次调用都会在现有的行为上追加新的行为。按注册的顺序依次进行。
      在有多个javascript文件时,$(document).ready()更有优势

    • $(document).ready(function(){}) 可以简写为 $(function(){})

  • 事件绑定

    • .bind(type[ , data] , fn)
      type为要绑定的事件类型,fn为处理函数
      $("div").bind("mouseover mouseout",function(){}) 绑定多个事件
    • .click(fn)
    • .mouseover(fn)
    • .mouseout(fn)
  • 合成事件

    • .hover(fn)光标悬停
    • toggle(fn1,fn2,...fnN)鼠标连续单击
  • 事件冒泡

    • event.stopPropagation() 阻止事件冒泡
    • event.preventDefault() 阻止时间默认行为
    • return false 同时阻止冒泡和默认行为
  • 事件对象属性

    • event.type 获取事件类型
    • event.target 获取触发事件的元素
    • event.pageXevent.pageY 鼠标相对于页面的x,y坐标
  • 移除事件

    • .unbind([type],[data])
      没有参数,删除所有绑定事件
      有两个相同的事件的话,可以通过第二个参数(函数名)来指定删除特定的事件处理函数
  • 模拟操作

    • .trigger(type,[data])
      可以触发自定义的事件
      触发事件,同时也会执行函数默认操作(例如focus事件会让input也获得焦点)
      如果只想触发绑定事件,可以用triggerHandler()方法

动画

  • .show().hide()
    接受一个参数,可以为速度关键词"fast"normal"slow",也可以是时间,元素在相应的时间里显示/隐藏。
    隐藏时元素宽高不透明度同时减少,最后元素样式为display:none

  • fadeIn()fadeOut()
    只改变元素的不透明度,最后元素样式为display:none

  • slideUp()slideDown()
    只改变元素的高度,最后元素样式为display:none

  • animate(params,speed,callback)

    • params:一个包含样式及值的映射,比如{property1:"value1",property2:"value2",...}
      speed:速度参数,可选
      callback:回调函数,可选
    • 可以用jQuery的链式调用来实现多步动画
    • .css()方法不会加入到动画队列,会立即执行。可以使用回调函数对非动画方法实现排队。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容