2019独角兽企业重金招聘Python工程师标准>>>

第一章 jQuery 基础

1. 包装器

jQuery对包装器(Wrapper)或包装集(wrapped set)进行操作,即 $(selector)或jQuery(selector)这样的结构。

jQuery选择器完整列表:http://docs.jquery.com/Selectors。

2.实用函数

如:

var trimmed = $.trim(someString); 或 var trimmed = jQuery.trim(someString);

3. 文档就绪处理程序

$(document).ready(function(){ });

简写形式:

$(function(){ });

4. 创建DOM元素

$("<p>Hi there!</p>").insertAfter("#followMe");

5. 扩展

$.fn.disable = function() {...}

6. 与其他库共存

jQuery.noConflict();

第二章 选择元素

$(selector)
$(selector, "div#sampleDOM")

1. 基本CSS选择器

a
#specialID
.specialClass
a#specialID.specialClass
p a.specialClass

合并多个选择器:

$("div,span")

2. 子节点、容器和特性选择器

*
E
E F
E>F
E+F
E~F
E.C
E#I
E[A]
E[A=V]
E[A^=V]
E[A$=V]
E[A!=V]
E[A*=V] 包含
3. 位置过滤
:first
:last
:first-child
:last-child
:only-child
:nth-child(n) 从 1 开始计数
:nth-child(even|odd)
:nth-child(Xn+Y)
:even
:odd
:eq(n)
:gt(n)
:lt(n)
示例:
table#languages td:first-child
table#languages td:nth-child(1)
li:nth-child(2n)
tbody tr:eq(2) td:eq(2) td:contains('1972') tbody td:nth-child(3):eq(2)

4. CSS和自定义过滤选择器

:animated
:button
:checkbox
:checked
:contains(food)
:disabled
:enabled
:file
:has(selector)
:header h1~h6
:hidden
:image
:input
:not(selector)
:parent
:password
:radio
:reset
:selected
:submit
:text
:visible
input:not(:checkbox)
$("img:not([src*='dog'])")
div:has(span)
$("tr:has(img[src$='puppy.png'])")

2. 创建HTML

$("<div>") 与 $("<div></div>") 或 $("<div/>") 是等价的。

示例:

$('<img>',
{src: 'images/little.bear.png',alt: 'Little Bear',title: '...',click: function() { alert($(this).attr('title')); }
})
.css({cursor: 'pointer',border: '1px solid black',padding: '12px 12px 20px 12px',backgroundColor: 'white'
})
.appendTo('body');

3.1 大小

.length
.size()
$('a').length
$('a').size()
[index]
.get(index)

示例:

var imgElement = $('img[alt]')[0];
var imgElement = $('img[alt]").get(0);
$($('p').get(23))
eq(index)
first()
last()

获取元素数组

toArray()

示例:

var allLabeledButtons = $('label+button').toArray();

获取元素索引

index(element)

示例:

var n = $('img').index($('img#findMe')[0];

简写为:

var n = $('img').index('img#findMe');

查找元素自己的索引:

var n = $('img').index();

3.3 分解包装集

添加元素:

add(expression, context)

示例:

$('img[alt]').add('img[title]');
$('img[alt]')
.addClass('thickBorder')
.add('img[title]')
.addClass('seeThrough');

排除元素:

not(expression)

示例:

$('img[title]').not('[title*=puppy]')
$('img').not(function(){return !$(this).hasClass('keepMe');})

过滤元素:

filter(expression)

示例:

$('td').filter(function(){return this.innerHTML.match(/^\d+$/)})
$('img').addClass('seeThrough').filter('[title*=dog]').addClass('thickBorder')

获取子集:slice(begin, end) end 不包含在子集内,可省略

$('*').slice(0,4);

获取子集:has(test)

$('div').has('img[alt]')

转换包装集:map(callback)

var allIds = $('div').map(function() {return this.id == undefined ? null : this.id;
}).get();

遍历:each(iterator)

$('img').each(function(n){this.alt = 'This is image[' + n + '] with an id of ' + this.id;
});
$([1,2,3]).each(function(){ alert(this); });

3.4 使用关系获取包装集

children([selector])
closest([selector]) //邻近祖先元素组成的包装集
contents()
next([selector])
nextAll([selector])
nextUntil([selector])
offsetParent()
parent([selector])
parents([selector])
parentsUntil([selector])
prev([selector])
prevAll([selector])
prevUntil([selector])
siblings([selector])

示例:

$(this).closest('div')
$(this).siblings('button[title="Close"]')

3.5 更多处理方式

find(selector)
is(selector)

示例:

wrappedSet.find('p cite');

3.6 管理jQuery链

将当前包装集回滚到前一个返回的包装集:end()

示例:

$('img').filter('[title]').hide();
$('img').filter('[title]').hide().end().addClass('anImage');

合并方法链中的前两个包装集:andSelf()

示例:

$('div')
.addClass('a)
.find('img')
.addClass('b')
.andSelf()
.addClass('c');

3.1 访问元素属性

$('*').each(function(n){this.id = this.tagName + n;
});

获取特性值:attr(name)

示例:

alert($("#myImage").attr("src"));

jQuery 的 attr() 方法的规范化访问名称

规范化名称    DOM名称

cellspacing   cellSpacing

class            className

colspan        colSpan

cssFloat        styleFloat(IE), cssFloat(other browsers)

float             同上

for htmlFor

frameborder frameBorder

maxlength maxLength

readonly readOnly

rowspan rowSpan

styleFloat styleFloat(IE), cssFloat(other browsers)

tabindex tabIndex

usemap useMap

设置特性值:attr(name, value)

$('*').attr('title', function(index, previousValue) {return previousValue + ' I am element ' + index +' and my name is ' + (this.id || 'unset');
});

设置多个特性值:attr(attributes)

$('input').attr({value: '', title: 'Please enter a name'}
);

删除特性:removeAttr(name)

示例1:强制在新窗口打开链接

$("a[href^=htt://']").attr("target", "_blank");

示例2:解决双重提交问题

$("form").submit(function() {$(":submit", this).attr("disabled", "disabled");
});

取消禁用:$("xxx").removeAttr("disabled");

在元素上存储自定义属性:data(name, value)

从元素读取自定义属性:data(name)

移除自定义属性:removeData(name)

3.2 改变元素样式

addClass(names) names - 单个类名或空格隔开的多个类名

removeClasse(names)

toggleClass(names)

示例:

function swapThem() {$("tr").toggleClass("striped");
}
$(function() {$("table tr:nth-child(even)").addClass("striped");$("table").mouseover(swapThem).mouseout(swapThem);
});

根据条件切换类:toggleClass(names, switch)

hasClass(name)

以数组的形式返回特定元素的类名列表:

方法1:

$("p:first").attr("className").split(" ");

方法2:

$.fn.getClassNames = function() {var name = this.attr("className");if (name != null) {return name.split(" ");} else {return [];}
};

设置样式:css(name, value)

$("div.expandable").css("width", function(index, currentWidth) {return currentWidth + 20;
});

快捷形式:css(properties)

$("<img>", {src: ...
})
.css({cursor: 'pointer',border: '1px solid black',...
});

获取样式:css(name);

设置宽度和高度:width(value) height(value)

$("div.myElements").width(500)

等价于:

$("div.myElements").css("width", 500)

获取宽度和高度: width() height()

获取元素的位置:offset() position()

滚动控制:scrollLeft() scrollLeft(value) scrollTop() scrollTop(value)

3.3 设置元素内容

html()
html(content)
text()
text(content)
append(content)
prepend(content)
before(content)
after(content)
appendTo(targets)
prependTo(targets)
insertBefore(targets)
insertAfter(targets)
wrap(wrapper)
wrapAll(wrapper)
wrapInner(wrapper)
unwrap()
remove(selector) 删除包装集中的所有元素
detach(selector) 功能同上,但保留绑定的事件和jQuery数据
empty()
clone(copyHandlers)
replaceWith(content)
replaceAll(selector)

3.4 处理表单元素值

表单插件(http://jquery.malsup.com/form/)。

val()
val(value)
val(values)

示例:

$("[name='radioGroup']:checked").val()
var checkboxValues = $("[name='checkboxGroup']:checked").map(function(){ return $(this).val(); }
).toArray();
$("input, select").val(["one", "two", "three"]);

第四章 事件处理

4.1 浏览器的事件模型

DOM 第0级事件模型

DOM 第2级事件模型

1. 建立事件处理器:addEventListener(eventType, listener, useCapture)

2. 事件传播:捕获阶段(根到目标)和冒泡阶段(目标到根)

4.2 jQuery 事件模型

绑定事件:bind(eventType, data, handler) bind(eventMap)

$("img").bind("click" function(event){alert("Hi there!");});
<script>
$(function(){$("#example").bind("click", function(event) {say("BOOM once!");}).bind("click", function(event) {say("BOOM twice!");}).bind("click", function(event) {say("BOOM three times!");});
});
</script>
$(".whatever").bind({click: function(event){/* handle clicks */},mouseenter: function(event){/* handle mouseenters */},mouseleave: function(event){/* handle mouseleaves */}
});

支持的事件类型名:blur change click dbclick error focus focusin focusout keydown keypress keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup ready resize scroll select submit unload

创建一次性事件绑定:one(eventType, data, listener)

删除事件处理器:unbind(eventType, listener) unbind(eventType)

Event实例作为第一个参数传入函数,不管使用什么浏览器。这个Event实例是 jQuery.Event 类型的对象。

属性

altKey
ctrlKey
currentTarget
data
metaKey
pageX
pageY
relatedTarget
screenX
screenY
shiftKey
result
target
timestamp
type
which

方法

preventDefault()
stopPropagation()
stopImmediatePropagation()
isDefaultPrevented()
isPropagationStopped()
isImmediatePropagationStopped()

动态管理事件处理器

bind()是静态绑定,在事件触发时只有最先被绑定的元素才会被处理,动态创建的元素不会触发事件。

创建 Live 事件处理 live(eventType, data, listener)

和bind()行为相似,不同之处是,当相应的事件发生时,该方法会为所有匹配选择的元素触发此事件,包括在使用live()方法绑定事件时还不存在的元素。例如:

$("div.attendToMe").live("click", function(event) {alert(this);
});

删除 LIVE 事件处理 die(eventType, listener)

触发事件处理器 trigger(eventType, data)

只触发处理器,不需要事件传播和语义动作执行:triggerHandler(eventType, data)

简化的触发事件方法:eventTypeName()

blur change click dblclick error focus focusin focusout keydown keypress keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover resize scroll select submit unload

其他事件相关的方法

toggle(listener1, listener2, ...) 第一次单击调用listener1,第二次单击调用 listener2,……全部执行完后重新开始。

hover(enterHandler, leaveHandler) 第一个是mouseenter事件处理器,第二个是mouseleave处理器

hover(handler) 二合一

mouseover 和 mouseout ,鼠标进入某个元素触发 mouseover,移出或进入子元素触发 mouseout。

mouseenter 和 mouseleave,鼠标进入元素触发 mouseenter,移出元素才触发 mouseout。

(待续)

转载于:https://my.oschina.net/qczhang/blog/186405

jQuery实战读书笔记(第一章至第四章)相关推荐

  1. 【读书笔记】.NET本质论第四章-Programming with Type(Part Two)

    欢迎阅读本系列其他文章: [读书笔记].NET本质论第一章 The CLR as a Better COM [读书笔记].NET本质论第二章-Components(Part One) [读书笔记].N ...

  2. jQuery 实战读书笔记之第四章:使用特性、属性和数据

    使用属性 /* 每个元素都有一或多个特性,,这些特性的用途是给出相应元素或其内容的附加信息.(出自 JavaScript 高级程序设计) */ /* 特性是固有的 JavaScript 对象 属性指的 ...

  3. jQuery实战读书笔记(第五章)

    第五章 用动画和特效装扮页面 1. 显示和隐藏元素 1.1 可折叠的模块 $('div.caption img').click(function(){ var body$ = $(this).clos ...

  4. jq实现ajax访问服务器,jQuery实战读书笔记(第八章 使用 Ajax 与服务器通信)

    1. 加载内容到元素中 1.1 使用 jQuery 加载内容 load(url, parameters, callback) url - 服务器端资源的URL parameters - 作为请求参数传 ...

  5. 【读书笔记】推荐系统实践·第四章·利用用户标签数据

    代码方面,主要实现了4.3和4.2.2的一个验证统计,4.4的代码本来准备写一下的,后来因为杂碎的统计工作太多就放弃了.代码和笔记的word版放在https://github.com/littleli ...

  6. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题

    5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对 ...

  7. 机器学习实战---读书笔记: 第11章 使用Apriori算法进行关联分析---2---从频繁项集中挖掘关联规则

    #!/usr/bin/env python # encoding: utf-8''' <<机器学习实战>> 读书笔记 第11章 使用Apriori算法进行关联分析---从频繁项 ...

  8. 锋利的Jquery【读书笔记】 -- 第四章 jQuery中的事件和动画

    锋利的Jquery读书笔记 第三章 jQuery中的DOM操作 jQuery中的事件 事件绑定 bind方法 合成事件 hover方法 toggle方法 事件冒泡 事件对象 停止事件冒泡 阻止默认行为 ...

  9. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

最新文章

  1. 【二级java】软件工程基础
  2. 强化学习(十三) 策略梯度(Policy Gradient)
  3. 双网卡服务器SOCKET编程指定客户端通信网卡
  4. Greenplum【环境搭建 02】GP 数据库 web 监控工具 Greenplum Command Center v6.6.0 安装配置及问题处理(一篇学会部署配置启动 GPCC 避坑指南)
  5. windows 如何在Windows命令行下配置IP地址
  6. OpenSessionInViewFilter 对 lazy 加载 的配置及作用
  7. php与mysql事物处理
  8. 我的世界服务器权限组权限修改器,我的世界op权限组指令是什么 op权限组指令汇总...
  9. VIM 编辑器配置与使用
  10. IE设置每次打开时都清除缓存
  11. 语音-MFCC,Fbank特征提取
  12. CentOS7安装字体库 (java环境使用)
  13. console口 - 配置口
  14. qcap 教程_给winpe添加explorer教程(续):文件列表
  15. PC端如何使用ITunes无线连接ios手机
  16. 高通量测序的方式解析:单端测序、paired-end/mate-paired(PE/MP)测序
  17. U盘、移动硬盘加密工具绿色版
  18. 如何成为一个iOS开发者
  19. 数据分析(python系)
  20. POI之excel固定模板导出

热门文章

  1. 安卓微信跳转页面、重定向页面空白,ios系统正常、pc正常、安卓浏览器正常。
  2. ROS-3DSLAM(二)lvi-sam项目认识
  3. UVA10118(记忆化搜索 + 好题)
  4. opcache php7,让子弹飞~利用 OPcache 扩展提升 PHP7 性能 | Laravel 篇
  5. mysql sql按小时统计_sqlserver/mysql按天、按小时、按分钟统计连续时间段数据
  6. 耳机接口规则_耳机插头3.5与2.5三段与四段i版与n版等详解
  7. 基于ARM核心板实现的BMS可行性方案
  8. JS调用新旧windowsMedia的方法
  9. 汇编与接口技术期末复习笔记(1)—— 汇编部分
  10. VTK图形处理之剪裁