持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
jQuery封装了JavaScript常用的功能代码.
slogan: Write Less, Do More!
jQuery提供的功能
- 优化了HTML文档操作
- 优化了事件处理
- 优化了动画设计
- 优化了Ajax交互
jQuery的优点
- 提供了链式语法
- 提供了短小清晰的多功能接口
- 高效灵活的css选择器
- 兼容各种主流的浏览器
css中的选择器
有id选择器, 类选择器和标签选择器
jQuery选择器的作用是方便获取html中的dom元素
使用原始方式绑定一个事件
<button onclick="clickMe()">点我</button>
function clickMe() {
alert("我被点了")
}
使用jQuery方式绑定一个事件
首先要引入jquery
如果绑定事件在body标签的前面, 同需要将绑定事件放入ready函数的回调中
如果在body的后面, 则不需要
<script type="text/javascript" src="https://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
$('Document').ready(function(){
$('#clickBtn').click(function func() {
alert('我被点了2')
})
})
jquery查找元素
<ul>
<li id="id1">我是文本1</li>
<li id="id2">我是文本2</li>
<li id="id3">我是文本3</li>
<li id="id4">我是文本4</li>
<li id="id5">我是文本5</li>
</ul>
// 第一种方式获取dom元素
var ul = $("ul")
var lis = ul.find("li")
var li = lis.eq(1)
console.log("1:", li.text())
// 第二种方式获取dom元素
console.log("2:", $('ul li:eq(1)').text())
// 第三种方式获取dom元素
console.log("3:", $('ul li').eq(1).text())
jquery查找属性
// 获取元素上的属性, 第一种方式
var lis = $('ul li')
var len = lis.length
var res1 = lis.eq(len-1).attr('id')
console.log(res1);
// 获取元素上的属性, 第二种方式
var res2 = $('ul li:last').attr('id')
console.log(res2);
jquery添加元素
// 添加新的元素, 第一种方式
$('ul').append($("<li id="id6">我是文本6</li>"))
// 添加新的元素, 第二种方式
$("<li id=‘id7’>我是文本7</li>").appendTo($('ul'))
// 替换ul标签下的全部元素, , 第三种方式
$('ul').html($("<li id=‘id8’>我是文本8</li>"))
链式调用
在对象调用方法之后, 这个方法的返回是还是对象自己, 因此可以继续使用.来调用其它的方法
// 链式调用
var myFunction = function() {
return {
func0: function() {
console.log('func0');
return this
},
func1: function() {
console.log('func1');
return this
}
}
}
myFunction().func0().func1()
jquery删除和隐藏元素
remove方法是将元素完全从页面上移除
hide方法是将元素的display属性设置none
show方法是将元素的display属性重新设置为block或才inline
<h2 id="a">我是一个元素</h2>
// 删除元素
function removeEle() {
$("#a").remove();
}
// 隐藏元素
function hideEle() {
$("#a").hide();
}
// 显示元素
function showEle() {
$("#a").show();
}
jquery操作属性
attr()方法, 有三种使用方式
一种是传入一个参数, 也就是属性名, 来获得对应的属性值
一种是传入一个参数和一个值, 来设置这个标签的属性
一种是传入一个对象, 来设置这个标签的多个属性
如果要给元素设置多个属性,就需要给attr方法传入一个JavaScript对象,对象里面是键值对的集合,每个键值对的格式为key:value,不同的键值对用逗号分隔
<h2 id="a">我是一个元素</h2>
// 获取属性
function getAttr() {
alert($('#a').attr('id'))
}
// 设置属性
function setAttr() {
$('#a').attr('id', 'b')
}
// 设置多个属性
function setAttrs() {
$('#b').attr({
name: 'shaosiming',
age: 18
})
}
// 移除某个属性
function removeAttr() {
$('#b').removeAttr('name')
}
jquery的内容操作
html()如果不传入参数则是获取带有标签的文本, 如果传入参数, 则可以将带有标签的文本动态的解析插入到页面中
text()如果不传入参数则是获取不带标签的文本, 如果传入参数, 则可以将文本原封不动的插入到页面中
function setHtml() {
$('#a').html("<table border="1px" cellpadding="10px">" +
"<tr>>" +
"<th>111</th>>" +
"<th>222</th>>" +
"<th>333</th>>" +
"</tr>>" +
"<tr>>" +
"<th>444</th>>" +
"<th>555</th>>" +
"<th>666</th>>" +
"</tr>>" +
"<tr>>" +
"<th>777</th>>" +
"<th>888</th>>" +
"<th>999</th>" +
"</tr>>" +
"</table>"
)
}
function setText() {
$('#a').text(
"<table border="1px" cellpadding="10px">" +
"<tr>>" +
"<th>111</th>>" +
"<th>222</th>>" +
"<th>333</th>>" +
"</tr>>" +
"<tr>>" +
"<th>444</th>>" +
"<th>555</th>>" +
"<th>666</th>>" +
"</tr>>" +
"<tr>>" +
"<th>777</th>>" +
"<th>888</th>>" +
"<th>999</th>" +
"</tr>>" +
"</table>"
)
}
// 获取html文本
function getHtml() {
alert($('#a').html());
}
// 获取纯文本
function getText() {
alert($('#a').text());
}
jquery操作元素的值
val()如果不传入参数, 则是获取元素的值, 如果传入参数, 则是设置元素的值
<input type="text" value="please input your name">
<button onclick="getName()">getName</button>
<br>
<select id="fruits" multiple>
<option value="01">苹果</option>
<option value="02">香蕉</option>
<option value="03">西瓜</option>
</select>
// 获取input元素的值
function getName() {
alert($('input:eq(0)').val())
}
// 设置单选select元素的值
// $('select:eq(0)').val('西瓜')
// $('select:eq(0)').val('02')
// 设置多选select元素的值
$('select:eq(0)').val(['02', '03'])
jquery寻找节点
<ul id="menu">
<li>我是第1行</li>
<li>我是第2行</li>
<li id="node">我是第3行</li>
<li>我是第4行</li>
<li>我是第5行 <span style="background: pink;">我是一个span</span></li>
</ul>
// 获取该节点的下一级节点
function getChildren() {
console.log($('#menu').children());
alert($('#menu').children())
}
// 获取该节点的孙节点
function getGrandChildren() {
var lis = $('#menu').children()
console.log(lis.last().find('span'));
alert(lis.last().find("span"))
}
// 获取该节点的父节点
function getParent() {
var li = $('li:eq(0)')
console.log(li.parent());
}
// 获取该节点的上一个节点和下一个节点
function getPrevAndNext() {
var node = $('#node')
console.log(node.prev());
console.log(node.next());
}
// 获取该节点的兄弟节点
function getSiblings() {
var node = $('#node')
console.log(node.siblings());
}