【jQuery】精细学习记录

基础

基本语法:

$(选择器).action(回调函数);
$/jQuery //jQuery核心函数
$(选择器) //获得的jQuery对象

jQuery核心 - jQuery函数

$([选择器, html, callback])
- $("#id")
- $("<div><p>Hello</p></div>")
- $(function(){ });

jQuery.readyException(error)

当包裹在jQuery()或jQuery( document ).ready(),或等效的函数中的函数同步抛出错误的时候,这个方法就会被触发。错误会记录在控制台中,并传递给window.onerror。如果你想以不同的方式处理这种错误,可以覆盖此方法。jQuery中源码:

工具

# jQuery.browser.version  //返回浏览器版本号
# jQuery.each(object, [callback]) //遍历object对象
$.each( [0,1,2], function(i, n){ //i:键名,n:键值
alert( "Item #" + i + ": " + n );
}); //可以通过return提前结束遍历
# jQuery.extend([deep], target, object1, [objectN])
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options); //deep为false时,仅返回值为合并值,target不变
//deep为true时,合并target与objects到target,同jQuery.merge(..)
# jQuery.merge(first,second) //会改变first
# jQuery.grep(array, callback, [invert]) //过滤函数,当invert为false[默认]时,返回为true的值
$.grep( [0,1,2], function(n,i){
return n > 0;
}); //结果:[1, 2]
# jQuery.trim(str) //去除字符串前后空格
# jQuery.type(obj) //检测数据类型
jQuery.type(true) === "boolean"
jQuery.type(3) === "number"
# jQuery.param(obj,[traditional]) //将表单元素数组或者对象序列化。
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));
alert(recursiveEncoded);
alert(recursiveDecoded);
//a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
//a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3
···

jQuery对象

方法:
# length //jQuery对象内部Dom元素个数
$("img").length //ima元素个数
# get([index]) //获取指定位置Dom元素
$("img").get(0)
# each(callback) //对每个Dom元素执行一次回调函数
$("div").each(function (index, domEle) {
// domEle == this
$(domEle).css("backgroundColor", "yellow");
if ($(this).is("#stop")) {
$("span").text("Stopped at div index #" + index);
return false;
}
});
# index([selector|element]) //返回
- html:
<ul>
<p></p>
<li id="foo">foo</li>
<li id="bar">bar</li>
<li id="baz">baz</li>
</ul>
- jQuery:
$('li').index(document.getElementById('bar')); //1,传递一个DOM对象,返回这个对象在原先集合中的索引位置
$('li').index($('#bar')); //1,传递一个jQuery对象
$('li').index($('li:gt(0)')); //1,传递一组jQuery对象,返回这个对象中第一个元素在原先集合中的索引位置
$('#bar').index('li'); //1,传递一个选择器,返回#bar在所有li中的索引位置
$('#baz').index(); //3,不传递参数,返回这个元素在同辈中的索引位置。
属性:
# attr(name|properties|key,value|fn) //专门非bool值
设置属性:$("img").attr({ src: "test.jpg", alt: "Test Image" });
获取属性:$("img").attr("src");
# removeAttr(name) 删除对应属性
$("img").removeAttr("src");
# prop(name|properties|key,value|fn) //专门bool值
设置属性:$("input[type='checkbox']").prop({ disabled: true });
获取属性:$("input[type='checkbox']").prop("checked");
# removeProp(name) 删除对应属性
$("p").removeProp("luggageCode");
# $("p").append("The secret luggage code is: ") 添加内容
# addClass(class|fn) 添加类
$("p").addClass("selected1 selected2");
- $("p").removeClass("selected"); //删除类
# $("p").toggleClass("selected"); //切换属性
# 获取元素内容
- .html()
$('p').html(); //获取
$('p').html("Hello <b>world</b>!"); //设置
- .text() 用法同.html()
- .val() 获取value值

文档就绪事件:

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

选择器

同CSS选择器,语法为$(选择器)

$("*")              选取所有元素
$(this) 选取当前元素
$("#id", ".class") 复合选择器
$(div p span) 层级选择器 //div下的p元素中的span元素
$(div>p) 父子选择器 //div下的所有p元素
$(div+p) 相邻元素选择器 //div后面的p元素(仅一个p)
$(div~p) 兄弟选择器 //div后面的所有p元素(同级别)
$(.p:last) 类选择器 加 过滤选择器 第一个和最后一个(first 或者 last)
$("#mytable td:odd") 层级选择 加 过滤选择器 奇偶(odd 或者 even)
$("div p:eq(2)") 索引选择器 div下的第三个p元素(索引是从0开始)
$("a[href='www.baidu.com']") 属性选择器
$("p:contains(test)") // 内容过滤选择器,包含text内容的p元素
$(":empty") //内容过滤选择器,所有空标签(不包含子标签和内容的标签)parent 相反
$(":hidden") //所有隐藏元素 visible
$("input:enabled") //选取所有启用的表单元素
$(":disabled") //所有不可用的元素
$("input:checked") //获取所有选中的复选框单选按钮等
$("select option:selected") //获取选中的选项元素
$("button") - $(":button") //前者选择button元素 - 后者选择所有button(包括type为button的input)

事件

鼠标事件 键盘事件 表单事件 文档/窗口事件
click - 单机 keypress - 不会触发ALT等键 submit - 表单提交 load - 加载完毕时
dblclick - 双击 keydown - 键按下 change - 表单值改变 resize - 窗口大小调整时
mouseenter - 鼠标进入 keyup - 键抬起 focus - 元素聚焦 scroll - 滚动条滚动时
mouseleave - 鼠标离开 blur - 失去焦点 unload - 离开页面时
hover - 鼠标悬停
mousedown - 鼠标按下

mouseover-mouseout: 子元素移入、出时也会触发

mouseenter-mouseleave: 子元素移入、出时不会触发

​ hover: 即使用的是enter-leavek

$(window).keypress(function(event){
//event.which是获取ASCII码,前面的函数是将ASCII码转换成字符,空格键和Enter键输出均为空白。
console.log(String.fromCharCode(event.which));
//从event对象中key属性获取字符,但是Enter键的key值为"Enter",空白键还是空白" "。
console.log(event.key);
});

事件绑定

eventName(function(){})
on(eventName, function(){})

事件解绑

off() //解除全部
off(eventName) //解除某个event

事件坐标

event.clientX\clientY //相对视口
event.pageX\pageY //相对页面
event.offsetX\offsetY //相对事件元素左上角

阻止事件

event.stopPropagation()  //阻止事件冒泡
event.preventDefault() //阻止默认事件行为,如超链接的默认事件是跳转到链接

事件委托

delegate(selector,[type],[data],fn)
- $("ul").delegate("li", "click", function(){})
undelegate(eventName) //解除事件委托

CSS

css(name|pro|[,val|fn])

$("p").css("color"); \\获取css样式
$("p").css({ "color": "#ff0011", "background": "blue" }); \\设置css样式

位置

- offset([coordinates])  \\获取匹配元素在当前视口的相对偏移。
$("p:last").offset({ top: 10, left: 30 }); \\设置
$("p:last").offset().left; \\获取
- position() \\获取匹配元素相对父元素的偏移
$("p:last").position().top; \\仅获取
- scrollTop([val])
scrollLeft([val]) \\设置或获取所选元素的垂直和水平滚动条,如果没有则忽略
$("div.demo").scrollLeft(300); \\设置
$("div.demo").scrollLeft(); \\获取

尺寸

height(): height
width(): width
innerHeight(): height+padding
innerWidth(): width+padding
outerHeight(bool): height+padding+border
outerWidth(bool): width+padding+border //bool为true,加上margin

元素筛选

过滤

返回的jQuery对象的···
first() 第一个
last() ···
eq(n) 第n+1个
filter(selector) 仅保留···
not(selector) 滤除···
has(selector) 内含···
hasClass(··) 选择标有某class的元素

查找

children(selector)  \\取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。
find(selector) \\取得一个包含匹配的元素集合中每一个元素的所有后代元素的元素集合。
parent() \\找到唯一父元素
parents([selector]) \\找到祖先元素
后面参考下图:
next() //下方兄弟元素
prev() //上方兄弟元素
siblings() //所有兄弟元素

文档处理

内部插入

append()  //插入到元素最后
appendTo()
- $('#id').append('<p>1</p>')
$('<p>1</p>').appendTo($('#id'))
prepend() //插入到元素最前
prependTo()

替换

replaceAll(selector)
replaceWith(content|fn) //fn是直接移动位置,而不是复制一份

外部插入

after()
before()
insertAfter()
insertBefore()
- <p>I would like to say: </p><div id="foo">Hello</div>
$("p").insertAfter("#foo"); 或 $("#foo").after("p")
<div id="foo">Hello</div><p>I would like to say: </p>

删除

empty() //元素内部置为空白
remove([selector]) //移除元素

效果

show([speed,[easing],[fn]])
hide([speed,[easing],[fn]])//元素显示与隐藏
实质:对display属性进行操作
toggle([speed],[easing],[fn])
用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。
如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
如果有多个fn,则随着点击依次执行(回调函数
---调整高度
slideDown([speed,[easing],[fn]])
slideUp([speed,[easing],[fn]])
slideToggle([speed],[easing],[fn])
---调整不透明度
fadeIn([speed],[easing],[fn])
fadeOut([speed],[easing],[fn])
fadeTo([[speed],opacity,[easing],[fn]]) //调整
fadeToggle([speed,[easing],[fn]])

网络请求

更底层+灵活 - $.ajax()

- jQuery.ajax(url,[settings])
\\jQuery 底层 AJAX 实现。
\\简单易用的高层实现见 $.get, $.post 等。
\\$.ajax() 返回其创建的 XMLHttpRequest 对象。
\\你需要操作不常用的选项,以获得更多的灵活性。 - 回调函数
需要使用回调函数处理$.ajax()得到的数据。
\\beforeSend、error、dataFilter、success、complete。
beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。 - settings:选项
async:Boolean (默认: true) 默认设置下,所有请求均为异步请求。
contentType:String (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。
context:Object 设置Ajax回调函数的上下文(this)。默认this就指向调用本次AJAX请求时传递的options参数。
就像这样:
$.ajax({ url: "test.html", context: document.body, success: function(){
$(this).addClass("done");
}});
data:Object,String 发送到服务器的数据。
dataType:String 预期服务器返回的数据类型。
error:Function (默认: 自动判断 (xml 或 html)) 请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。
headers:map Header Default: {} 一个额外的"{键:值}"对映射到请求一起发送。
···见文档

详情可见中文文档jQuery.Ajax

$.get()

jQuery.get(url, [data], [callback], [type])
\\通过 HTTP GET 请求载入信息。
\\简单的 GET 请求功能,复杂请使用 $.ajax() 。
参数含义同后面 $.post()

$.getJson()

同 $.get(·,·,·,json)

$.getScript()

同 $.get(·,·,·,script)

$.post()

jQuery.post(url, [data], [callback], [type])
\\通过 HTTP POST 请求载入信息。简单的 POST 请求功能。
\\复杂请使用 $.ajax()
url:发送请求地址。
data:待发送 Key/value 参数。
callback:发送成功时回调函数。
type:返回内容格式,xml, html, script, json, text, _default。

$(selector).load()

load(url, [data], [callback])
\\载入文件代码并插入至 DOM 中。
\\会覆盖Dom元素原有值

serialize()

\\序列表表格内容为字符串。
$("form").serialize()

详细中文文档

【jQuery】精细学习记录的更多相关文章

  1. 【Bootstrap5】精细学习记录

    [Bootstrap5]精细学习记录 Bootstrap模板 <!DOCTYPE html> <html> <head> <title>Bootstra ...

  2. JQuery EasyUI学习记录(五)

    1.datagrid使用方法(重要) 1.1将静态html渲染为datagrid样式 <!--方式一: 将静态html渲染为datagrid样式 --> <table class=& ...

  3. JQuery EasyUI学习记录(三)

    1.jQuery EasyUI messager使用方式 1.1 alert方法 $(function(){ //1.alert方法---提示框 $.messager.alert("标题&q ...

  4. JQuery EasyUI学习记录(二)

    1.jquery easyUI动态添加选项卡(查看jquery easyUI手册) 1.1 用于动态添加一个选项卡 1.1.1 选中指定的选项卡和判断某个选项卡是否存在 测试代码: <a id= ...

  5. JQuery EasyUI学习记录(一)

    1.主页设计(JQuery EasyUI插件) 下载easyUI开发包: 将easyUI资源文件导入页面中: <link rel="stylesheet" type=&quo ...

  6. JQuery EasyUI学习记录(四)

    1.EasyUI中的validatebox使用 提供的校验规则: 1.非空校验required="required" 2.使用validType指定 email: 正则表达式匹配电 ...

  7. jQuery Moblile Demos学习记录Theming、Button、Icons图标,脑子真的不好使。

    jQuery Moblile Demos学习记录Theming.Button.Icons图标,脑子真的不好使. 06. 二 / Jquery Mobile 前端 / 没有评论   本文来源于www.i ...

  8. jQuery Moblile Demos学习记录Panel

    jQuery Moblile Demos学习记录Panel 11. 二 / Jquery Mobile / 没有评论   本文来源于www.ifyao.com禁止转载!www.ifyao.com 我就 ...

  9. D3.js学习记录【转】【新】

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. SpringBoot自动配置原理源码级别分析

    SpringBoot自动配置原理 前言 后面还会讲到SpringBoot自动配置原理,会主要讲解@EnableAutoConfiguratuon注解帮助我们做了什么事情,是如何自动把自动配置类扫描到容 ...

  2. Apache配置 1. 默认虚拟主机

    编辑httpd.conf搜索httpd-vhosts,去掉#号 # vi /usr/local/apache2.4/conf/httpd.conf Include conf/extra/httpd-v ...

  3. 擅用ABAP错误捕捉,避免系统Dump

    有时候我们在写程序时,会因为计算公式不符合算术表达式,计算公式的字段值不是纯数值等等问题造成程序dump,这个时候我们在无法避免字段赋值错误的情况下,又不想程序dump可以采取catch异常的方法进行 ...

  4. 锁与同步器的基础--AQS

    什么是AQS AQS全名AbstractQueueSynchronizer,可以翻译为抽象队列同步器 Abstract--说明该类需要被继承,提供实现的框架和一些必要的功能 事实上,AQS也的确提供了 ...

  5. 让JS代码Level提升的忍者秘籍(实用)

    本文章共2377字,预计阅读时间5-10分钟. 前言 没有前言. 你准备好成为同事眼中深藏不露.高深莫测.阳光帅气的前端开发了吗? 那就开始吧! 本文秉承宗旨:代码实用与逼格并存. 提升JS代码Lev ...

  6. DNA序列(JAVA语言)

    package 第三章习题; /*  * 输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小.  * 两个等长字符串的Hamming距离等于字符不同的位置个数, ...

  7. PureMVC学习笔记

    一.简介 PureMVC是基于MVC思想和一些基础设计模式建立的一个轻量级的应用框架,免费开源,最初是执行的ActionScript 3语言使用,现在已经移植到几乎所有主流平台.PureMVC官方网站 ...

  8. 从源码剖析Go语言基于信号抢占式调度

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/485 本文使用的go的源码15.7 这一次来讲讲基于信号式抢占式调度 ...

  9. 在M1芯片的Mac系统上做.net core开发靠谱吗?

    作为一个7年老.NET程序员,最近几年苹果慢慢接替微软,成为我心中最酷的科技公司. 为什么我会选择Mac os作为我的开发环境? 很多做.net的同学都使用Windows系统作为自己的开发环境,我其实 ...

  10. [游记]2020/CSP - S总结

    2020 / C S P − S 总 结 2020/CSP - S总结 2020/CSP−S总结 这年的 C S P CSP CSP考的不是很理想,本来稳进的 C S P − J CSP-J CSP− ...