Jquery学习记录
Jquery
是一个 JavaScript 库,在使用 jquery 之前你需要掌握 js,因为 jquery 只是简化了 js 的一些操作。
1.使用 jquery
1.1 $和$()
1 | $("h1").remove(); |
大多数 jQuery 方法是在 jQuery 对象上调用的,如上所示;这些方法被称为命名空间的一部分,或“jQuery 原型”,最好将其视为 jQuery 对象方法。
但是,有几种方法不对选择起作用;这些方法被称为 jQuery 命名空间的一部分,最好将其视为核心 jQuery 方法。
- 在 jQuery 选择上调用的方法位于命名空间中,并自动接收并返回选择作为 .
$.fn``this - 命名空间中的方法通常是实用程序类型的方法,不适用于选择;它们不会自动传递任何参数,并且它们的返回值会有所不同。
$
在少数情况下,对象方法和核心方法具有相同的名称
1.2 $(文档).ready()
在文档“准备就绪”之前,无法安全地作页面。jQuery 会为您检测到这种就绪状态。其中包含的代码只有在页面文档对象模型 (DOM) 准备好执行 JavaScript 代码后才会运行。一旦整个页面(图像或 iframe),而不仅仅是 DOM,将运行其中包含的代码。$( document ).ready()``$( window ).on( "load", function() { ... })
简写方式:
1 | // A $( document ).ready() block. |
另一种方式:
1 | // Passing a named function instead of an anonymous function. |
默认情况下,jQuery 使用 $$作为jQuery` 的快捷方式。因此,如果您使用的是另一个使用该变量的 JavaScript 库,则可能会与 jQuery 发生冲突。为了避免这些冲突,您需要在将 jQuery 加载到页面后以及尝试在页面中使用 jQuery 之前立即将其置于无冲突模式。`$$
jquery 设置无冲突模式
1 | <!-- Putting jQuery into no-conflict mode. --> |
1.3 属性:元素的属性可以包含对应用程序有用的信息,因此能够获取和设置它们非常重要。
.attr()方法:可以作为 setter()、也可以作为 getter();
.attr()作为二传手:
1 | $("a").attr("href", "allMyHrefsAreTheSameNow.html"); |
.attr()作为 getter:
1 | $("a").attr("href"); // Returns the href for the first a element in the document |
1.4 选择元素:jQuery 最基本的概念是“选择一些元素并对它们做一些事情”。jQuery 支持大多数 CSS3 选择器,以及一些非标准选择器。
- 通过 id 选择:
$( "#myId" ); - 通过类名选择:
$( ".class" ); - 通过属性选择:
$( "input[name='first_name']" ); - 复合 css、逗号分隔选择器、伪类选择器等可以自行查阅
保存选择结果:var divs = $( "div" );
1.5实用方法:
获取和设置有关元素的信息:
- .html():获取或设置 html 内容
- .text():获取或设置文本内容
- .attr():获取或设置属性的值
- .val():获取或设置表单元素的值
移动、复制或删除元素:
- $(B).insertAfter(A):将 B 插入到 A 之后
- $(B).insertBefore(A):将 B 插入到 A 之前
- $(B).After(A):将 A 插入到 B 之后
- $(B).After(A):将 A 插入到 B 之前
- $(A).appendTo(B):将 A 插入到 B 元素内部之后
- $(A).appendTo(B):将 B 插入到 A 内部之后
- preappendTo()和 preappend()就不详细介绍了,同上;
- .clone():复制
- .empty:不删除元素,但清空内容
- .remove().detach():永久删除
- .detach().remove():删除但保留在可选区
创建新元素:$(html 标签)就可以直接创建一个元素
查找父类、子类和兄弟:
- .parent():父类; .prarentUntil():祖先; .closedst(标签):最近的标签
- .children():儿子;.find(标签):是这个标签类型的儿子
- .pre(); .next(); nextAll(); preAll();
获取并设置 CSS:
获得 css:
$( "h1" ).css( "font-size" );设置 css:
1
2
3
4
5
6
7
8// 方法1
$("h1").css("fontSize", "100px"); // Setting an individual property.
// 方法2
$("h1").css({
fontSize: "100px",
color: "red",
});
其他方法:
$.trim():删除空格
$.eah():迭代数组或对象
1
2
3
4
5$.each(arr, function (index, value) {
sum += value;
});
console.log(sum); // 15$.inArray():返回数组的下标,若不存在,返回-1
.index():在调用它的 jQuery 对象中搜索给定元素
无参数时:
1
2
3
4
5
6
7<ul>
<div></div>
<li id="foo1">foo</li>
<li id="bar1">bar</li>
<li id="baz1">baz</li>
<div></div>
</ul>1
2
3
4
5
6
7
8
9
10
11
12
13var foo = $("#foo1"); // id选择器,获取id为li的标签
console.log("Index: " + foo.index()); // 1
var listItem = $("li");
console.log("Index: " + listItem.index());
console.log("Index: " + listItem.first().index());
var div = $("div");
console.log("Index: " + div.index());
console.log("Index: " + div.first().index());有参数时
1
2
3
4
5
6
7
8<ul>
<div class="test"></div>
<li id="foo1">foo</li>
<li id="bar1" class="test">bar</li>
<li id="baz1">baz</li>
<div class="test"></div>
</ul>
<div id="last"></div>1
2
3
4
5
6
7
8
9
10
11
12
13var foo = $("li");
console.log("Index: " + foo.index("li")); // 0
console.log("Index: " + foo.first().index("li")); // 0
var baz = $("#baz1");
console.log("Index: " + baz.index("li")); // 2
var listItem = $("#bar1");
console.log("Index: " + listItem.index(".test")); // 1
var div = $("#last");
console.log("Index: " + div.index("div")); // 2
事件
jQuery 提供了将事件处理程序附加到选择的简单方法。当事件发生时,将执行提供的函数。
在 dom 元素上设置事件响应
示例:
1 | // on方法可以监听事件的发生,“click”指点击事件,你可以输入其他事件类型 |
每个事件处理函数都会接受一个事件对象,其中包含许多属性和方法
.paeventDefault:阻止默认事件和向上传递
pageX,pageY:事件发生时相对于页面显示左上角的鼠标位置,注意并非整个浏览器窗口
绑定事件时可以传入数据:
1
2
3
4
5
6
7$("input").on(
"change",
{ foo: "bar" }, // Associate data with event binding
function (eventObject) {
console.log("An input value has changed! ", eventObject.data.foo);
}
);启动事件的 DOM 元素
触发事件时指定的命名空间
事件戳:与 1970 年 1 月 1 日的毫秒差
预防默认
绑定多个事件:
1 | $("div").on({ |
若想要断开事件连接时请调用.off(“事件名”)
自定义事件
1 | $(document).on( |
效果
显示和隐藏内容
.show():显示;.hide():隐藏;
1 | // 隐藏 |
自定义属性效果
使用.animate()自定义效果:jQuery 可以通过该方法对任意 CSS 属性进行动画处理。该方法允许您对设置值或相对于当前值的值进行动画处理
1 | // 先通过选择器获取,后使用animate更改属性值 |
ajax
背景
这里只详细介绍 ajax,关于 axios 和 fetch 请查阅 axios 相关文档,企业常用 axios,关于原因请查看我 axios 的专栏;
传统上,网页需要重新加载才能更新其内容。对于基于 Web 的电子邮件,这意味着用户必须手动重新加载收件箱才能检查是否有新邮件。这有很大的缺点:速度很慢,而且需要用户输入。当用户重新加载收件箱时,服务器必须重建整个网页并重新发送所有 HTML、CSS、JavaScript 以及用户的电子邮件。这是非常低效的。理想情况下,服务器应该只需要发送用户的新消息,而不是整个页面。到 2003 年,所有主要浏览器都通过采用 XMLHttpRequest (XHR) 对象解决了这个问题,允许浏览器无需重新加载页面即可与服务器通信。
XMLHttpRequest 对象是称为 Ajax(异步 JavaScript 和 XML)的技术的一部分。使用 Ajax,然后可以使用 XMLHttpRequest API 在浏览器和服务器之间传递数据,而无需重新加载网页。
Ajax 请求由 JavaScript 代码触发;您的代码向 URL 发送请求,当它收到响应时,可以触发回调函数来处理响应。由于请求是异步的,因此在处理请求时,代码的其余部分将继续执行,因此必须使用回调来处理响应。
不幸的是,不同的浏览器以不同的方式实现 Ajax API。通常,这意味着开发人员必须考虑所有不同的浏览器,以确保 Ajax 能够普遍工作。幸运的是,jQuery 提供了 Ajax 支持,可以抽象出痛苦的浏览器差异。它既提供了功能齐全的方法,也提供了简单的便利方法
大多数 jQuery 应用程序实际上并不使用 XML,尽管名称为“Ajax”;相反,它们以纯 HTML 或 JSON(JavaScript 对象表示法)的形式传输数据。
通常在不同的域名、ip、接口调用其它服务器的信息会发生跨域错误,只需要在服务端设置白名单(跨域资源共享 CORS)就可,关于这部分,请查阅我关羽 Spring 的系列文档。
Ajax 概述
获取与发布:向服务器发送请求的两种最常见的“方法”是 GET 和 POST。
Get 方法仅是获取资源,get 请求会被浏览器缓存,请注意,这是不安全的。get 请求通常以查询字符串的形式来发送其所有数据;
Post 方法是更改服务器上的数据,它不会被浏览器缓存,所以它是安全的。查询字符串可以是 URL 的一部分,但数据往往作为帖子数据单独发送。
异步性:Ajax 是异步的,因此它不会立即响应。智能使用回调来处理响应。
核心方法——$.ajax()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27// 使用方法
$.ajax({
// Url链接
url: "post.php",
// 传输的数据
data: {
id: 123
},
// 方法类型
type: "GET",
// 接受的数据类型
dataType : "json",
header:{
}
success(resp){
},
error(resp){
}
})