【前端】jquery基础学习
jQuery引入
下载链接:[jQuery官网](https://jquery.com/),首先需要下载这个jQuery的文件,然后在HTML文件中引入这个文件,就可以使用这个文件中帮我们提供的jquery的接口了。
jquery对象和dom对象
jquery找到的标签对象称为 -- jquery对象 原生js找到的标签对象称为 -- dom对象 dom对象只能使用dom对象的方法,不能使用jquery对象的方法 jquery对象也是,它不能使用dom对象的方法 dom对象和jquery对象互相转换: jquery对象转dom对象 -- jquery对象[0] 示例:$('#d1')[0] dom对象转jquery对象 -- $(dom对象)
jQuery选择器
基本选择器
jQuery('#d1') -- $('#d1') 基本选择器(同css) id选择器: $("#id") #不管找什么标签,用什么选择器,都必须要写$(""),引号里面再写选择器,通过jQuery找到的标签对象就是一个jQuery对象,用原生JS找到的标签对象叫做DOM对象,看我们上面的jQuery对象部分的内容 标签选择器: $("tagName") $('div') class选择器: $(".className") 配合使用: $("div.c1") // 找到有c1 class类的div标签 所有元素选择器: $("*") 组合选择器: $("#id, .className, tagName") 选择器找到的可能是多个标签,会放到数组里面,但还是jquery对象,能够直接使用jquery的方法,意思是找到的所有标签进行统一设置,如果要单独设置选中的所有标签中的某个标签,可以通过索引取值的方式找到,然后注意,通过索引取值拿到的标签,是个dom对象
基本筛选器
<ul> <li>蔡世楠</li> <li>尤利阳</li> <li id="l3">张雷</li> <li>申凯琦</li> <li id="l5">程德浩</li> <li>罗新宇</li> <li>曾凡星</li> </ul> :first -- 示例:$('li:first') // 第一个 :last // 最后一个 :eq(index)// 索引等于index的那个元素 :even // 匹配所有索引值为偶数的元素,从 0 开始计数 :odd // 匹配所有索引值为奇数的元素,从 0 开始计数 :gt(index)// 匹配所有大于给定索引值的元素 :lt(index)// 匹配所有小于给定索引值的元素 :not(元素选择器)// 移除所有满足not条件的标签 :has(元素选择器)// --$('li:has(.c1)') 找到后代中含有满足has里面选择器的那个标签 :not(:has(.c1)) -- $('li:not(:has(.c1))') 排除后代中含有满足has里面选择器的那个标签
属性选择器
[attribute] [attribute=value]// 属性等于 [attribute!=value]// 属性不等于 // 示例,多用于input标签 <input type="text"> <input type="password"> <input type="checkbox"> $("input[type='checkbox']");// 取到checkbox类型的input标签 $("input[type!='text']");// 取到类型不是text的input标签
表单筛选器
找到的是type属性为这个值的input标签中 :text :password :file :radio :checkbox :submit :reset :button
表单对象属性筛选器
:enabled #可用的标签 :disabled #不可用的标签 :checked #选中的input标签 :selected #选中的option标签
筛选器方法
下一个: $('#l3').next(); 找到下一个兄弟标签 $('#l3').nextAll(); 找到下面所有的兄弟标签 $('#l3').nextUntil('#l5');#直到找到id为l5的标签就结束查找,不包含它 上一个 $("#id").prev() $("#id").prevAll() $("#id").prevUntil("#i2") 父亲元素 $("#id").parent() $("#id").parents() // 查找当前元素的所有的父辈元素(爷爷辈、祖先辈都找到) $("#id").parentsUntil('body') // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止,这里直到body标签,不包含body标签,基本选择器都可以放到这里面使用。 儿子和兄弟元素 $('ul').children(); $('ul').children('#l3'); #找到符合后面这个选择器的儿子标签 $('#l5').siblings(); $('#l5').siblings('#l3'); #找到符合后面这个选择器的兄弟标签 find $('ul').find('#l3') -- 类似于 $('ul #l3') filter过滤 $('li').filter('#l3'); .first() // 获取匹配的第一个元素 .last() // 获取匹配的最后一个元素 .not() // 从匹配元素的集合中删除与指定表达式匹配的元素 $('li').not('#l3'); .has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。 .eq() // 索引值等于指定值的元素
事件
事件绑定方式
<script src="jquery.js"></script>
<script>
//方式1
// $('#d1').click(function () {
// $(this).css({'background-color':'green'});
// });
//方式2
$('#d1').on('click',function () {
$(this).css({'background-color':'green'});
})
</script>
常用事件
click 左键点击事件
//获取光标触发的事件
$('[type="text"]').focus(function () {
$('.c1').css({'background-color':'black'});
});
//失去光标(焦点)触发的事件
$('[type="text"]').blur(function () {
$('.c1').css({'background-color':'purple'});
});
//域内容发生改变时触发的事件
$('select').change(function () {
$('.c1').toggleClass('cc');
});
//鼠标悬浮触发的事件
// $('.c1').hover(
// //第一步:鼠标放上去
// function () {
// $(this).css({'background-color':'blue'});
// },
// //第二步,鼠标移走
// function () {
// $(this).css({'background-color':'yellow'});
// }
// )
// 鼠标悬浮 等同于hover事件
// 鼠标进入
// $('.c1').mouseenter(function () {
// $(this).css({'background-color':'blue'});
// });
// 鼠标移出
// $('.c1').mouseout(function () {
// $(this).css({'background-color':'yellow'});
// });
// $('.c2').mouseenter(function () {
// console.log('得港绿了');
// });
// 鼠标悬浮事件
// $('.c2').mouseover(function () {
// console.log('得港绿了');
// });
// mouseover 和 mouseenter的区别是:mouseover事件是如果该标签有子标签,那么移动到该标签或者移动到子标签时会连续触发,mmouseenter事件不管有没有子标签都只触发一次,表示鼠标进入这个对象
//键盘按下触发的事件 e\event事件对象
$(window).keydown(function (e) {
// console.log(e.keyCode); //每个键都有一个keyCode值,通过不同的值来触发不同的事件
if (e.keyCode === 37){
$('.c1').css({'background-color':'red'});
}else if(e.keyCode === 39){
$('.c1').css({'background-color':'green'});
}
else {
$('.c1').css({'background-color':'black'});
}
})
// 键盘抬起触发的事件
$(window).keyup(function (e) {
console.log(e.keyCode);
})
input事件:
22期百度:<input type="text" id="search">
<script src="jquery.js"></script>
<script>
$('#search').on('input',function () {
console.log($(this).val());
})
</script>
事件冒泡
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #d1{ background-color: red; height: 200px; } #d2{ background-color: green; height: 100px; width: 100px; } </style> </head> <body> <div id="d1"> <div id="d2"></div> </div> <script src="jquery.js"></script> <script> $('#d1').click(function () { alert('父级标签'); }); $('#d2').click(function () { alert('子级标签'); }); </script> </body> </html>
阻止后续事件发生
$('#d1').click(function () { alert('父级标签'); }); $('#d2').click(function (e) { alert('子级标签'); return false; // e.stopPropagation(); });
事件委托
事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件,将未来添加进来的某些子标签自动绑定上事件。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="d1"> <button class="c1">爱的魔力转圈圈</button> </div> <script src="jquery.js"></script> <script> // $('.c1').on('click',function () { // alert('得港被雪飞调教了,大壮很难受!'); // var btn = document.createElement('button'); // $(btn).text('爱的魔力转圈圈'); // $(btn).addClass('c1'); // console.log(btn); // //添加到div标签里面的后面 // $('#d1').append(btn); // // }); #将'button' 选择器选中的标签的点击事件委托给了$('#d1'); $('#d1').on('click','button',function () { alert('得港被雪飞调教了,大壮很难受!'); var btn = document.createElement('button'); $(btn).text('爱的魔力转圈圈'); $(btn).addClass('c1'); console.log(btn); console.log($(this)) //还是我们点击的那个button按钮 //添加到div标签里面的后面 $('#d1').append(btn); }); </script> </body> </html>
页面载入和window.onload
1. jquery文件要在使用jquery的代码之前引入 2. js代码最好都放到body标签下面或者里面的最下面来写 3.window.onload // window.onload = function () { // $('.c1').click(function () { // $(this).css({'background-color':'green'}); // }) // } 4.页面载入,$(function (){alert('xx');}) -- $(document).ready(function(){}); 页面载入与window.onload的区别 1.window.onload()函数有覆盖现象,必须等待着图片资源加载完成之后才能调用 2.jQuery的这个入口函数没有函数覆盖现象,文档加载完成之后就可以调用(建议使用此函数) 示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="jquery.js"></script> <script> // 等待整个页面中的内容全部加载完成之后,触发window.onload对应的函数里面的内容 // window.onload 有覆盖现象,会被后面的window.onload给重新赋值 // window.onload = function () { // $('.c1').click(function () { // $(this).css({'background-color':'green'}); // }) // } $(function () { $('.c1').click(function () { $(this).css({'background-color':'green'}); }) }); </script> <script src="xx.js"></script> <style> .c1{ background-color: red; height: 200px; width: 200px; } </style> </head> <body> <div class="c1"></div> <img src="" alt=""> </body> </html>