jQuery未完成
jQuery
- 就是一个js库
- 是一个封装好的方法和函数,封装了很多预先定义好的函数在里面
- jQuery就是为了快速方便的操作DOM 里面基本都是函数(方法)
- 加快了开发速度
优点
- 轻量级
- 跨浏览器兼容
- 链式编程,隐式迭代
- 简化了DOM操作
- 支持插件扩展开发
- 开源,免费
基本使用
官方网址: https://jquery.com/
版本
- 1x : 兼容IE678等低版本浏览器,官网不在更新
- 2x : 不兼容IE678等低版本浏览器,官网不在更新
- 3x : 不兼容IE678等低版本浏览器,官网主要更新维护的版本
1.引入jQuery文件
<script src="./jquery.min.js"></script>
定义一个 div 设置宽高
<style> .lmk { width: 100px; height: 100px; background-color: pink; } </style> <body> <div class="lmk"></div> </body>
使用 JQuery 隐藏 div
<script> $('.lmk').hide(); </script>
JQuery入口函数
- 作用:
- 如果script在body上面就执行不了了
- 所以优先加载DOM元素,然后再加载script代码
$(function(){ ... // 此处是页面DOM加载完成后才会加载的 }); -------------或--------------------------------------者---------------------------------------------------- $(document).ready(function(){ ... // 此处是页面DOM加载完成后才会加载的 })
- 继承上面的代码
// 等页面DOM加载完毕后再去执行js代码 $(document).ready(function() { $('.lmk').hide(); }) // 刷新页面后就隐藏了
// 第二种方式 // 等页面DOM加载完毕后再去执行js代码 $(function() { $('.lmk').hide(); })
- 这个函数相当于js中的 DOMContentLoaded
- 不同于原生js中的load事件,load事件是等页面文档,外部js文件,css文件,图片加载完毕才执行script内部代码
jQuery顶级对象 $
- $ 是jQuery的别称,在代码中可以使用jQuery代替$,但一般为了方便,通常直接使用$
- 也是jQuery的顶级对象,相当于原生js中的window,把元素利用$包装成jQuery对象,就可以调用jQuery的方法
例如$('.lmk').hide();
// 1.$是jQuery的别称 $(function() { alert(11) }) // 也可以使用 jQuery jQuery(function() { alert(11) })
##jQuery对象和DOM对象
- 用原生js获取的对象是DOM对象
// 例如 let myDiv = document.querySelector('div'); // 获取的div元素
- 用jQuery获取的对象是jQuer对象
// 用jQuery获取对象 $('div') // 获取div元素
- jQuery对象的本质是 利用$对DOM对象包装后产生的对象(伪数组的形式存储)
- jQuery对象只能使用jQuery的方法,DOM对象只能使用原生js的方法
jQuery对象和DOM对象互相转换
- 因为原生js比jQuery功能更多,有些功能jQuery并没有封装
- DOM转jQuery
// 如果没有获取DOM对象可以直接获取jQuery对象即可 $('div') // 获取div对象 // 如果已经获取了DOM对象,直接把DOM对象用$封装即可 let my_video = document.querySelector('video'); // 获取 video对象 $(my_video) // 将DOM对象转换成 JQuery对象,但是jQuery没有video的方法
- jQuery转DOM
// jQuery转DOM对象(两种方式) jQuery是一个伪数组 // $('div')[index] // $('div').get(index) // 第一种方式 let video_one = $('video')[0] // 将video对象中的第一个对象转成DOM对象 // 第二种方式 let video_two = $('video).get(1) // 将video对象中的二个对象转成DOM对象 video_two.play(); // 设置打开浏览器自动播放视频
jQuery常用API
jQuery基础选择器
- 原生js获取元素方式很多,兼容性不一样,但是jQuery封装后,是获取元素统一标准
$('选择器') // 里面选择器直接写css即可,但是要加引号
名称 用法 描述 ID选择器 $(‘#id’) 获取指定的ID元素 全选选择器 $(‘*’) 匹配所有的元素 类选择器 $(‘.class’) 匹配统一类class的元素 标签选择器 $(‘div’) 获取同一类标签的所有元素 并集选择器 $(‘div,p,li’) 获取多个元素 交集选择器 $(‘li.current’) 交集元素 (对于交集选择器,可以与id和class共同使用。)
jQuery层级选择器
名称 | 用法 | 描述 |
---|---|---|
子代选择器 | $(‘ul>li’) | 使用>号获取ul的儿子,注意:并不会获取ul的孙子层级的元素 |
后代选择器 | $(‘ul li’) | 使用空格,代表后代选择器,获取ul下所有的li元素,包括孙子元素 |
jQuery隐式迭代
- 遍历内部DOM元素,以伪数组的形式存储,就是隐式迭代
// 获取4个div元素 let lmk = $('div') console.log(lmk); // 给四个div设置背景颜色为粉色 lmk.css('background', 'pink') // 上面代码直接把4个div背景颜色设置为了粉色 // 是因为隐式迭代(遍历内部DOM元素,以伪数组的形式存储) // 给ul下li修改字体颜色 let kml = $('ul li') kml.css('color', 'pink')
jQuery筛选选择器
名称 | 用法 | 描述 |
---|---|---|
:first | $(‘li:first’) | 获取第一个li元素 |
:last | $(‘li:last’) | 获取最后一个li元素 |
:eq(index) | $(‘li:eq(2)’) | 获取到li元素中,选择索引号是2的元素,索引号从0开始 |
:odd | $(‘li:odd’) | 获取到li元素中,选择索引号为奇数的元素 |
:even | $(‘li:even’) | 获取到li元素中,选择索引号为偶数的元素 |
jQuery筛选方法(重点)
名称 | 用法 | 说明 |
---|---|---|
parent() | $(‘li’).parent(); | 查找父级 |
children(selector) | $(‘ul’).children(‘li’) | 相当于$(‘ul>li’),就是获取ul的子元素,不包括孙子的元素 |
find(selector) | $(‘ul’).find(‘li’); | 相当于$(‘ul li’),后代选择器 包含孙子元素 |
siblings(selector) | $(‘.first’).siblings(‘li’); | 查找兄弟节点,不包括自己,查找.first这个元素的兄弟节点是否有li这个元素 |
nextAll([expr]) | $(‘.first’).nextAll(); | 查找当前元素之后的所有同辈元素 |
prevtAll([expr]) | $(‘.last’).prevAll(); | 查找当前元素之前的同辈元素 |
hasClass(class) | $(‘div’).hasClass(‘protected’); | 检查当前元素是否含有某个特定的类,如果有则返回true |
eq(index) | $(‘li’).eq(2); | 相当于 $(‘li:eq(2)’),index从0开始 |
jQuery排他思想
- html代码
<button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button> <button>按钮</button>
- js代码
$(function() { // 1. 隐式迭代 给所有的按钮都绑定了点击事件 $('button').click(function() { // 2.当前的元素变换颜色 $(this).css('background', 'pink') // 3.其余的元素去掉背景颜色 也就是当前元素的兄弟们都去掉背景颜色 $(this).siblings('button').css('background', '') }) })
jQuery样式操作
- jQuery可以使用css方法来修改简单的样式,也可以操作类,修改多个样式
// 参数只写属性名,则返回属性值 $(this).css('color'); // 返回当前元素的属性值
// 参数写 属性名,属性值 则是设置一组样式,属性必须加引号,如果是数字可以不用加单位和引号 $(this).css('color','red'); // 设置当前元素字体颜色为红色
// 参数可以是对象的形式,方便设置多组样式,属性名和属性值用冒号隔开,属性可以不用加引号 $(this).css({'color':'red', 'font-size':20 }) // 如果是复合属性则必须使用驼峰命名法
- 通过类操作css(预先写好一个类,然后通过jQuery调用)
// 添加类 $('div').addClass('current'); // 将 current这个类添加给div(类名不用加.)\
// 删除类 $('div').removeClass('current'); 将 current这个类从div中删除
// 切换类 $('div').toggleClass('current'); 将 div元素中的类名改为current,如果没有类名就设置为current
jQuery类操作和原生JS中的className的区别
- 原生js中的className会覆盖元素原先里面的类名
- jQuery里面类操作只是对指定类进行操作,不影响原先的类名
jQuery效果
- 常见效果
显示隐藏 | 滑动效果 | 淡入淡出 | 自定义动画 |
---|---|---|---|
show() 显示 | slideDown() 下滑 | fadeln() 淡入 | animate() |
hide() 隐藏 | slideUp() 上滑 | fadeOut() 淡出 | |
toggle() 切换 | slideToggle() 切换 | fadeToggle() 切换 | |
fadeTo() 修改透明度 |
jQuery效果-显示/隐藏
用法: show([speed],[easing],[fn])
用法: hide([speed],[easing],[fn])
用法: toggle([speed],[easing],[fn]) toggle 例如第一次点击时显示,那么再点击一次就是隐藏了
参数可以都省略(无动画显示)
效果参数:
speed: 速度('slow','normal','fast')三种预定义字符串 或者动画的时长毫秒数
easing: 用来指定切换效果,默认是 swing 可用参数 linear(匀速)
fn: 回调函数,在动画完成时执行函数,每个元素执行一次
jQuery效果-滑动
用法: slideDown([speed],[easing],[fn])
用法: slideUp([speed],[easing],[fn])
用法: slideToggle([speed],[easing],[fn])
参数可以都省略(无动画显示)
效果参数:
speed: 速度('slow','normal','fast')三种预定义字符串 或者动画的时长毫秒数
easing: 用来指定切换效果,默认是 swing 可用参数 linear(匀速)
fn: 回调函数,在动画完成时执行函数,每个元素执行一次
jQuery鼠标切换事件-hover()
hover([over],out) 括号中参数是函数
第一个 over 和 第二个out都是函数
例:
$('div').hover(function(){
//鼠标经过时运行
},function(){
// 鼠标离开时运行
})
//如果hover()中只写一个函数,那么鼠标经过和离开都会触发这个函数中的代码
动画队列以及停止排队的方法
- 动画或者效果一旦触发就会执行,如果多次触发,就会造成多个动画或者效果排队进行
- 停止排队
// stop() stop()方法用于停止动画或者效果 注意: stop()写到动画或者效果的前面,相当于停止上一次的动画 如果stop()写到了执行动画函数的后面,就相当于直接把动画停住了 例: // 通过hover()来触发鼠标经过和鼠标离开事件 $('.lmk>li').hover(function() { // 先使用stop()停止上一次的动画,在使用slideToggle()方法切换上拉下拉菜单 $(this).children('ul').stop().slideToggle(100); })
jQuery效果-淡入淡出
用法: fadeln([speed],[easing],[fn])
用法: fadeOut([speed],[easing],[fn])
用法: fadeToggle([speed],[easing],[fn])
参数可以都省略(无动画显示)
效果参数:
speed: 速度('slow','normal','fast')三种预定义字符串 或者动画的时长毫秒数
easing: 用来指定切换效果,默认是 swing 可用参数 linear(匀速)
fn: 回调函数,在动画完成时执行函数,每个元素执行一次
- 前三个和之前的一样
// 渐进的方式调整到指定的不透明度 fadeTo([[speed],opacity,[easing],[fn]]) // 速度 和 透明度 必须写 效果参数: opacity 透明度 必须写 取值为 0到1之间 speed: 速度('slow','normal','fast')三种预定义字符串 或者动画的时长毫秒数 easing: 用来指定切换效果,默认是 swing 可用参数 linear(匀速) fn: 回调函数,在动画完成时执行函数,每个元素执行一次
jQuery效果-自定义动画
用法: animate(params,[speed],[easing],[fn])
效果参数:
params:想要更改的样式属性,以对象的形式传递, 必须写, 属性名可以不带引号,如果是复合属性需要采取驼峰命名法,其余参数可以省略
speed: 速度('slow','normal','fast')三种预定义字符串 或者动画的时长毫秒数
easing: 用来指定切换效果,默认是 swing 可用参数 linear(匀速)
fn: 回调函数,在动画完成时执行函数,每个元素执行一次
- html代码
<style>
div {
position: relative;
width: 100px;
height: 100px;
background-color: pink;
}
</style>
<body>
<button>动起来</button>
<div></div>
</body>
- js代码
$(function() { $('button').click(function() { $('div').animate({ // 第一个参数以对象的形式传输 left: 200, // 向右移动200px top: 300, // 向下移动300px opacity: .4, // 透明度变为 0.4 width: 500 // 宽度变为 500px }, 500) // 500是第二个参数 }) })
jQuery属性操作
获取元素的固有属性-prop()
- 所谓的元素固有属性就是元素本身自带的属性 比如 a元素里的href 或者 input元素的type
- html代码
<a href="https://blog.kkdaly.top" title="很好">啦啦啦</a>
- js代码
$(function() { // element.prop('属性名') let a = $('a').prop('href'); // 获取a标签的属性名 console.log(a); // 打印属性名 }) // 打印结果 http://blog.kkdaly.top/
设置元素的固有属性-prop()
- html代码
<a href="https://blog.kkdaly.top" title="很好">啦啦啦</a>
- js代码
$(function() { // prop('属性','属性值') $('a').prop('title', '啦啦啦') // 将 a标签的title改为了啦啦啦(原来是很好) })
固有元素属性举例
- html代码
<body> <input type="checkbox" checked> </body>
- js代码
$(function() { $('input').change(function() { // change 和 click 不同的是 // Click事件是选择列表项, 而Change事件则是编辑内容, //这两个事件的结果都是使ComboBox控件中的现实内容发生变化, //但是一个是通过鼠标点击, 即Click; 另一个是通过在输入框中编辑内容, 即Change。 console.log($(this).prop('checked')); //返回true/false }) })
设置和获取元素自定义属性-attr()
-
- html代码
<body> <div index='1'></div> </body>
- js代码
<script> $(function() { console.log($('div').prop('index')); // 返回 undefined console.log($('div').attr('index')); // 返回 1 类似于原生js的getAttribute() $('div').attr('index', '4'); // 修改自定义属性为4 类似于原生js的setAttribute() }) </script>
数据缓存-data()
- data()方法可以在指标的元素生存取数据,并不会修改DOM元素结构,一旦页面刷新,之前存放的数据都将被移除
$(function() { $('span').data('name', 'andy') // 将name这个属性设置为andy,但是页面中的span是没有改属性的 // 相当于把这个属性存到了内存中,虽然页面中没有属性,但是可以通过data()来调用name属性的值 console.log($('span').data('name')); // 调用name属性的值 // data()方法获取data-index这个h5自定义属性时可以不用写前面的data- 而且返回的是数字型 console.log($('div').data('index')) // 实际是获取了 data-index这个属性的值 }
:checked 选择器 和 change事件
- :checked作用是判断复选框是否为选中状态
- change事件是表单的编辑内容用来对表单进行作用
$(function() { // 全部选中功能 把全选按钮的状态赋值给三个小的按钮 // 事件可以使用change $('.checkall').change(function() { $('.check-one,.checkall').prop('checked', $(this).prop('checked')) }) // 选中功能 当我们每次点击小的复选框按钮,就来判断 // 如果小复选框被选中的个数等于3,就应该把全选按钮选上,否则全选按钮不选 // jQuery 提供了一个选择器 :checked选择器 (查找被选中的表单元素) $('.check-one').change(function() { if ($('.check-one:checked').length === $('.check-one').length) { // 通过 checked判断复选框的按钮是否被选中 $('.checkall').prop('checked', true) // 如果 都被选中就把全选的复选框也选上按钮 } else { $('.checkall').prop('checked', false) // 如果没有全选就取消全选按钮的选中状态 } }) })
jQuery内容文本操作
- 主要针对元素的内容还有表单的值操作
普通元素内容 html()-相当于原生innerHTML
html() //获取元素的内容
html('内容') // 设置元素的内容
普通元素文本内容 text()-相当于innerText
text() //获取元素的内容
text('内容') // 设置元素的内容
表单元素内容 val()-相当于原生value
val() //获取元素的内容
val('内容') // 设置元素的内容
jQuery元素操作
- 遍历,创建,添加,删除元素操作
遍历元素
- jQuery中的隐式迭代是对同一类元素做了同样的操作,如果想要给同一类元素做不同的操作,就需要用到遍历
遍历元素-each()
// 语法:
// $('元素').each(function(index,domEle){
// 代码块
// })
// each()方法遍历每一个元素,主要用DOM处理元素
// 参数:
// index: 每个元素的索引号;
// demEle: 每个DOM元素对象,不是jQuery对象
- html代码
<div>1</div> <div>2</div> <div>3</div>
- js代码
$(function() { // 对同一类元素做不同的操作,需要遍历元素,(类似for,但是比for强大) $('div').css('color', 'red'); // 将三个div字体颜色设置为红色 // 1.each()方法遍历元素 // 将三个div设置不同的颜色 let sum = 0; // 设置一个值,用于保存和 let arr = ['red', 'green', 'blue'] // 声明一个数组 $('div').each(function(index, domEle) { console.log(index); // 返回的是元素的索引号 0 1 2 console.log(domEle); // 返回的是DOM元素对象 $(domEle).css('color', arr[index]) // 将每个div设置不同的颜色 sum += parseInt($(domEle).text()) // 将div的值相加 console.log(sum); // 返回 6 将上面div的值相加了 }) })
遍历元素-$.each()
$.each(ojbect,function(index,element){
// 代码块
})
// $.each()方法可以用于遍历任何对象,主要用于数据处理,比如数组,对象
// 参数:
// index: 每个元素的索引号
// element: 遍历内容
- html代码
<div>1</div> <div>2</div> <div>3</div>
- js代码
$(function() { let arr = ['red', 'green', 'blue'] // 声明一个数组 $.each($('div'), function(index, element) { console.log(index); // 返回的是元素的索引号 0 1 2 console.log(element); // 返回的是DOM元素对象 }) // 还可以处理数组和对象 $.each(arr, function(index, element) { console.log(index); // 返回数组的索引号 console.log(element); // 返回数组的值 }) })
创建元素-$(‘元素’);
// 创建语法:
// $('<li></li>')
// 添加语法:
// element.append('内容') // 内部添加 将元素放到元素的最后面 类似于原生的appendChild
// element.prepend('内容') // 内部添加 将元素放到元素的最前面
// element.after('内容') // 外部添加 将元素放到目标元素的后面
// element.before('内容') // 外部添加 将元素放到目标元素的前面
// 内部添加,生成后是父子关系
// 外部添加,生成后是兄弟关系
- 举例:
<ul> <li>原来的li</li> </ul> <div>原来的div</div> // ------------------------------------------ <script> // 1.创建元素 var li = $('<li>我被创建出来了</li>'); // 2.添加元素 // 内部添加 $('ul').append(li); // 放到内容的最后面 $('ul').prepend(li); // 放到内容的最前面 // 外部添加 var div = $('<div>我又被创建出来了</div>') $('div').after(div) // 将div放到div元素的后面 $('div').before(div) // 将div放到div元素的前面 </script>
删除元素
// element.remove() // 删除匹配元素本身
// element.empty() // 删除匹配元素中的所有子节点
// element.html(''') // 清空匹配元素的内容
- 举例:
// 3.删除元素 $('ul').remove() // 删除匹配元素本身 $('ul').empty() // 删除元素的子元素 $('ul').html('') // 将匹配元素的内容清空
jQuery尺寸,位置操作
语法 | 用法 |
---|---|
width()/height() | 获取匹配元素宽度和高度值,只算wdith 和 height |
innerWidth()/innerHeight() | 获取匹配元素宽度和高度值,包含padding |
outerWidth()/outerHeight() | 获取匹配元素宽度和高度值,包含padding,border |
outerWidth(true)/outerHeight(true) | 获取匹配元素宽度和高度,包含padding,border,margin |
- 如果以上参数为空,则是获取相应的值,返回的是数字型
- 如果参数为数字,则是修改为相应的值
- 参数可以不写单位
语法 | 用法 | 属性 |
---|---|---|
offset() | 设置或者返回元素的相对于DOM文档的偏移坐标,和父级没有关系(修改的话需要在括号里传一个字典(类)) | left,top 获取距离 |
position() | 获取带有定位的父级偏移坐标,如果父级没有定位,就以DOM文档为准(只能获取不能设置) | left,top 获取距离 |
scrollTop() | 设置或者获取元素被卷去的头部 | |
scrollLeft() | 设置或者获取元素被卷去的左侧 |
- offset() 和 position()
$(function() { // 1.获取设置距离文档位置坐标 offset console.log($('.kml').offset()); // 获取元素距离文档位置的位置 console.log($('.kml').offset().top); // 108 // 修改坐标 $('.kml').offset({ top: 200, left: 200 }) // 2.获取获取带有定位的父级偏移坐标 console.log($('.kml').position()); })
- scrollTop() 和 scrollLeft()
$(function() {
// 获取 元素距离页面顶部的坐标
let boxTop = $('.kml').offset().top;
$(window).scroll(function() { // 设置页面滚动事件
console.log($(document).scrollTop()); //获取元素被卷去头部的坐标
// 判断当页面滚动到元素距离页面的坐标时
if ($(document).scrollTop() >= boxTop) {
// 将隐藏的元素显示
$('.lmk').fadeIn() // 淡入
} else {
// 反之就隐藏
$('.lmk').fadeOut() // 淡出
}
})
// 点击返回顶部功能
$('.lmk').click(function() {
// 点击返回顶部
// $(document).scrollTop(0)
// 可以用 animate动画函数设置返回顶部
// 里面有scrollTop属性,可以设置位置
// 因为是元素做动画 所以要将document修改为 $('body,html').animate({scrollTop:0})
$('body,html').animate({
scrollTop: 0
})
})
})
jQuery事件
jQuery事件注册
// 语法:
// element.事件(function(){
// 代码块
})
jQuery事件处理-on()
- 该方法在匹配元素上绑定一个或多个事件的事件处理函数
- 可以实现事件的委派操作,例如就是把原来加给子元素身上的事件绑定到父元素身上,就是把事件委派给父元素
- 可以动态创建元素,click()没有办法绑定动态创建元素的事件,on()可以给动态生成的元素绑定事件
// 语法
// element.on(events,[selector],fn)
// events: 一个或多个用空格分隔的事件类型 比如click 或 keydown
// selector: 元素的子元素选择器
// fn : 回调函数
- html代码
<style> div { width: 100px; height: 100px; background-color: pink; } .current{ background-color: red; } </style> <body> <div></div> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <ol></ol> </body>
- 使用
// 注册多个事件 如果每个事件所做的事情都是不相同的话 需要将 事件:function(){} 以这种对象的形式传输,就可以实现不同的功能了 $('div').on({ mouseenter: function() { $(this).css('background', 'skyblue') // 鼠标经过变成蓝色 }, click: function() { $(this).css('background', 'purple') // 鼠标点击变成紫色 }, mouseleave: function() { $(this).css('background', 'orange') // 鼠标离开变成橙色 } });
- 使用2 (如果事件处理程序是相同的情况)
// 如果 注册的事件要实现的功能相同的话 可以以字符串的形式传递, 然后在传递一个函数,这样就可以减少代码量了 $('div').on("mouseenter mouseleave", function() { $(this).toggleClass('current'); // 为div 添加或者删除这个类 (切换) })
- 使用3 (做事件委派)
// on 做事件委派 $('ul').on('click', 'li', function() { console.log($(this).html()); // click 是绑定到ul身上的,但是触发的对象是ul里面的li })
- 使用4 (给动态元素创建事件)
// on 给动态元素创建事件 // 正常情况下用click() 没办法给新的动态li创建事件 on()可以 $('ol').on('click', 'li', function() { console.log(1); // 可以弹出1 }) var li = '<li>我是动态创建的li</li>' $('ol').append(li)
事件处理-off()解绑事件
- off()方法可以移除通过on()方法添加的事件处理程序
// 语法: // $('element').off('要解除的事件(不写全解除)'); //直接给添加事件处理的元素添加off()方法即可 // $('element').off('要解除的事件','子元素') // 用于解除事件委托
- 如果事件只想触发一次,可以用one()来绑定事件
// one() 只能触发一次事件 和on()的写法一样
自动触发事件-trigger()
- 该函数会自动触发,比如轮播图自动播放等
// 语法: // 1. element.事件() // 直接 这样写 可以自动触发 // 2. element.trigger('事件') // 第二种自动触发事件 // 3. element.triggerHandler('事件') // 第三种自动触发事件 (不会触发元素的默认行为)
jQuery事件对象
- 只要有事件被触发就会有事件对象产生
// 语法 // element.on(events,function(event){}) // events: 一个或多个用空格分隔的事件类型 比如click 或 keydown // event: 就是事件对象 // 可以用事件对象来阻止默认行为和冒泡 阻止默认行为: event.preventDefault() 或者 return false 阻止冒泡: event.stopPropagation()
- 阻止事件冒泡
$(function() { $(document).on('click', function(e) { console.log('点击了dom'); }) $('div').on('click', function(e) { console.log('点击了div'); e.stopPropagation() // 阻止事件冒泡到dom }) })
jQuery其他方法
jQuery拷贝对象
// 语法: $.extend([deep],target,object1,[objectN])
// 1.deep: 如果设为true为深拷贝,默认为false 浅拷贝
// target: 使用拷贝的对象
// object1: (真正要拷贝的对象)
// objectN: 拷贝的多个对象
- 使用
$(function() { var tarobj = { // 定义一个对象 id: 0 }; var obj = { // 定义一个对象 id: 1, name: 'andy', va: { id: 2 } } // $extend(target,obj) $.extend(tarobj, obj); // 将 obj 拷贝到 tarobj console.log(tarobj); // 已经拷贝过去了 会覆盖原来对象的数据 })
jQuery多库共存
- jQuery使用$符号作为标识符,其他js库也会用$作为标识符,会引起冲突
- 解决方法
$(function() { // 封装 函数 function $(ele) { return document.querySelector(ele); } console.log($('div')); // 现在自己封装的函数和jQuery冲突了 // 解决方案 可以把$ 符号改为 jQuery 比如 jQuery('div') jQuery('div').each(function(i, ele) { console.log(ele); }) // 解决方案2 可以改jQuery变量规定新的名称: $.noConflict() var suibian = jQuery.noConflict(); // 或者 $.noConflict() console.log(suibian('div')) // 获取到了div元素 })
jQuery插件
jQuery功能有限,想要更复杂的效果,可以借助于jQuery插件完成
插件库
名称 | 网址 |
---|---|
插件库 | http://www.jq22.com/ |
jQuery之家 | http://www.htmleaf.com/ |
- 全屏滚动特效插件
名称 | 网址 |
---|---|
中文 | http://www.dowebok.com/demo/2014/77/ |
github | https://github.com/alvarotrigo/fullPage.js |
本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!