jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。
// 例: $("#i1").html()的意思是:获取id值为 i1的元素的html代码。其中 html()是jQuery里的方法。 相当于DOM: document.getElementById("i1").innerHTML; 虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery 对象无法使用 DOM 对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。
一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:
jQuery === $ var $variable = jQuery对像 var variable = DOM对象 $variable[0] //jQuery对象转成DOM对象
拿上面那个例子举例,jQuery对象和DOM对象的使用:
$("#i1").html();//jQuery对象可以使用jQuery的方法 $("#i1")[0].innerHTML;// DOM对象使用DOM的方法
$('#d1') // 相当于: document.getElementById('d1') $('.c1') // 相当于: document.getElementsByClassName('d1') $('p') // 相当于: document.getElementsByTagName('p') $('div.c1') // 查找class含有c1的div标签 $("#d1, .c1, p") // 并列查找 $("x y") // x的所有后代y(子子孙孙) $("x > y") // x的所有儿子y(儿子) $("x + y") // 找到所有紧挨在x后面的y $("x ~ y") // x之后所有的兄弟y
:first // 第一个 :last // 最后一个 :eq(index) // 索引等于index的那个元素 :even // 匹配所有索引值为偶数的元素,从 0 开始计数 :odd // 匹配所有索引值为奇数的元素,从 0 开始计数 :gt(index) // 匹配所有大于给定索引值的元素 :lt(index) // 匹配所有小于给定索引值的元素 :not(元素选择器) // 移除所有满足not条件的标签 :has(元素选择器) // 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
示例:
$('ul li:first'); // 找到ul后代第一个li标签 $('ul li:last'); // 找到ul后代最后一个li标签 $('ul li:eq(2)'); // 找到ul后代索引为2的li标签 $('ul li:even'); // 找到ul后代中所有偶数元素 $('ul li:odd'); // 找到ul后代中所有奇数元素 $('ul li:gt(3)'); // 找到ul后代中所有大于索引3的li标签 $('ul li:lt(7)'); // 找到ul后代中所有小于索引7的li标签 $("ul:has(li)"); // 找到所有后代中有li标签的ul标签 $("ul:has(.c1)"); // 找到所有后代中有c1样式类的ul标签 $("li:not(.c1)"); // 找到所有不包含c1样式类的li标签 $("li:not(:has(a))"); // 找到所有后代中不含a标签的li标签
// 通过标签的属性查找标签 格式:$('标签选择器[属性名="属性值"]') 示例: $('[name]'); // 查找有name属性的标签 $('[name="gary"]') // 查找属性为name属性值为gary的标签 $('input[name="gary"]') // 查找属性为name属性值为gary的input标签
// 主要是查找form表单内部中的标签 格式:$(':属性值') 表单筛选器:$(':text') // 查找属性值是text的form表单内的标签 基本方式查找:$('input[type="text"]') // 结果相同 特例:$(':checked') // 会连同有默认属性selected的option标签一起找到 $(':selected') // 不会找到连同有默认属性checked的input标签
准备工作:
<body> <p id="d1">111 <p id="d5"> <span id="s1">p1span111</span> </p> <span id="s2">p1span222</span> <span id="s3">p1span333</span> </p> <p id="d2">222</p> <p id="d3">333</p> <p id="d4">444</p> </body>
""" 使用原生js代码批量查找到标签之后 结果是一个数组 需要索引取值之后才可以调用标签的一些方法 使用jQuery代码批量查找到标签之后 结果是一个jQuery对象(像数组) 不需要索引取值 就可以直接调用封装的方法 两者对象的转换 js对象转jQuery对象 $(js对象) jQuery对象转jd对象 jQuery对象索引取值 """
下一个元素:
$("#id").next(); // 下一个标签 $("#id").next().next(); // 下下一个标签 $("#id").nextAll(); // 所有标签 $("#id").nextUntil("#结束id"); // 到结束id中间的所有标签
上一个元素:
$("#id").prev() // 上一个标签 $("#id").prevAll() // 往上所有标签 $("#id").prevUntil("#结束id") // 往上到结束id中间的所有标签
父亲元素:
$("#id").parent() $("#id").parents() // 查找当前元素的所有的父辈元素 $("#id").parentsUntil("匹配到的元素") // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
儿子和兄弟元素:
$("#id").children();// 儿子们 $("#id").siblings();// 兄弟们
查找
// 搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。 $("p").find("span") // 在p标签后代找span标签 等价于$("p span")
筛选
// 筛选出与指定表达式匹配的元素集合。这个方法用于缩小匹配的范围。用逗号分隔多个表达式。 $("p").filter("#d2") // 从结果集中过滤出有c1样式类的 等价于 $("p#d2")
补充:
.first() // 获取匹配的第一个元素 .last() // 获取匹配的最后一个元素 .not() // 从匹配元素的集合中删除与指定表达式匹配的元素 .has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。 .eq() // 索引值等于指定值的元素
样式类操作:
addClass(); // 添加指定的CSS类名。 classList.add() removeClass(); // 移除指定的CSS类名。 classList.remove() hasClass(); // 判断样式存不存在 classList.contains() toggleClass(); // 切换CSS类名,如果有就移除,如果没有就添加。 classList.toggle()
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script> </head> <style> #d1 { width: 200px; height: 200px; border-radius: 50%; } .c2 { background-color: darkgray; } .c3{ background-color: yellow; } </style> <body> <div id='d1' class="c1 c2 c3"></div> </body> </html>
$('#d1').removeClass('c3'); // 删除c3类 $('#d1').addClass('c3'); // 添加c3类 $('#d1').hasClass('c3'); // 判断c3类 true $('#d1').hasClass('c4'); false $('#d1').toggleClass('c3'); // 切换c3类 $('#d1').toggleClass('c3');
样式操作:
css('属性名','属性值'); // 相当于DOM:.style.属性名='属性值' 示例: $('.c3').css('backgroundColor','red');
位置操作:
offset() // 获取匹配元素在当前窗口的相对偏移或设置元素位置 position() // 获取匹配元素相对父元素的偏移 scrollTop() // 获取匹配元素相对滚动条顶部的偏移 scrollLeft() // 获取匹配元素相对滚动条左侧的偏移 .offset()方法允许我们检索一个元素相对于文档(document)的当前位置。和 .position()的差别在于: .position()是相对于相对于父级元素的位移。
尺寸操作:
height() // 内容部分的高 width() // 内容部分的宽 innerHeight() // 内容区域+padding区域的大小 innerWidth() // outerHeight() // border及以内区域的大小 outerWidth() // 推荐:https://zhuanlan.zhihu.com/p/342069450
文本操作:
text() // 相当于DOM:innerText html() // 相当于DOM:innerHTML val() // 相当于DOM:value jQuery对象先转js对象之后.files '''括号内不写参数就是获取值 写参数就是设置值'''
示例:
<body> <div id="d1"></div> <input type="text" id="i1"> <p id="p1"></p> <p id="p2"></p> </body>
("div").text('<h1>好好学习吧!</h1>'); $("#p1").text('<h1>好好学习吧!</h1>'); $("#p2").html('<h1>好好学习吧!</h1>'); $("input").val('好好学习吧!');
属性操作:
attr() // 相当于DOM:setAttribute() '''适用于属性为静态的情况(不经常修改动态变化的)''' prop() $($(':checkbox')[1]).prop('checked',true) """适用于动态变化的情况 尤其是选择类标签"""
示例:
<body> <input type="checkbox" checked="checked">篮球 <input type="checkbox" >足球 <input type="checkbox" >乒乓球 </body>
$($(':checkbox')[0]).attr('checked'); 'checked' $($(':checkbox')[0]).prop('checked'); false
文档处理:
append() // 内部的尾部追加元素 prepend() // 内部的头部追加元素 after() // 同级别下面添加元素 before() // 同级别上面添加元素 remove() // 移除当前元素 empty() // 清空当前元素内部所有的数据 clone() // 克隆标签 括号内可以加布尔值来明确是否克隆事件
示例:
<body> <p>我是p标签</p> <span>我是span标签</span> </body>
$('p').append('好好学习吧') // 尾部追加 $('p').prepend('好好学习吧') // 头部追加 $('p').after('好好学习吧') // 同级别下面添加元素 $('p').before('好好学习吧') $('span').remove(); // 移除span标签 $('p').empty(); // 清空p标签
克隆标签示例:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>克隆</title> <style> #b1 { background-color: deeppink; padding: 5px; color: white; margin: 5px; } #b2 { background-color: dodgerblue; padding: 5px; color: white; margin: 5px; } </style> </head> <body> <button id="b1">屠龙宝刀,点击就送</button> <hr> <button id="b2">屠龙宝刀,点击就送</button> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> // clone方法不加参数true,克隆标签但不克隆标签带的事件 $("#b1").on("click", function () { $(this).clone().insertAfter(this); }); // clone方法加参数true,克隆标签并且克隆标签带的事件 $("#b2").on("click", function () { $(this).clone(true).insertAfter(this); }); </script> </body> </html>