jQuery基础学习笔记

jQuery是一个JavaScript库

1.基础

顶级对象$
$(function() {
    //语句
})
//等同于
jQuery(function() {
    //语句
})

$也相当于原生js中的window

jQuery对象和DOM对象

DOM对象是原生js获取的对象

//如
var div = document.querySelector('div'); //div就是DOM对象

jQuery对象

$('div'); //就是一个jQuery对象

jQuery对象是对DOM对象包装后的对象,利用伪数组进行存储

  • jQuery对象的属性方法和DOM对象的属性方法不能混用

  • jQuery对象和DOM对象可以相互转换

DOM对象转换为jQuery对象

$(DOM对象)

jQuery对象转换为DOM对象

$('div')[index]
//或
$('div').get(index)
//index为索引号

2.jQuery常用的API

选择器
基础选择器
$("选择器") //为CSS的选择器
名称用法
ID选择器$(“#id”)
全选选择器$(‘*’)
类选择器$(“.class”)
标签选择器$(“div”)
并集选择器$(“div, p”)
交集选择器$(“li.current”)
层级选择器
名称用法
子代选择器$(“ul>li”)
后代选择器$(“ul li”)
筛选选择器
语法用法描述
:first$(“li.first”)选取第一个元素
:last$(“li:last”)选取最后一个元素
:eq(index)$(“li:eq(5)”)选取索引号为5的元素(从0开始)
:odd$(“li:odd”)选取索引号为奇数的元素
:even$(“li:even”)选取索引号为偶数的元素
隐式迭代

遍历内部DOM元素的过程

也就是不需要进行for循环遍历

筛选方法
语法用法描述
parent()$(“li”).parent()查找父级,返回最近的父元素
parents()/parents(selector)$(“li”).parents()查找所有的父级
children(selector)$(“ul”).children(“li”)查找最近的子元素,相当于ul>li
find(selector)$(“ul”).find(“li”)相当于ul li
siblings(selector)$(“.first”).siblings(“li”)查找兄弟节点,不包含自己
nextAll([expr])$(“.first”).nextAll()查找当前元素之后的所有同辈元素
prevAll([expr])$(“.last”).prevAll()查找当前元素之前的所有同辈元素
hasClass(class)$(“div”).hasClass(“protected”)检查当前元素是否含有某个类名,若有返回true
eq(index)$(“li”).eq(2)相当于上面选择器的eq
排他思想

例:

<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<script>
    //选取了所有按钮
	$("button").click(function() {
        //当前的元素更改颜色
        $(this).css("background", "deepskyblue");
        //其他元素去掉颜色
        $(this).siblings("button").css("background", "");
    })
</script>
链式编程

简化代码

如上排他思想代码可以改为:

<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<script>
    //选取了所有按钮
	$("button").click(function() {
        $(this).css("background", "deepskyblue").sibling().css("background", 		 "");
    })
</script>
样式操作
CSS方法
  • 只写属性名,则返回属性值
$(this).css("color");
//console.log()之后返回的是值
  • 修改样式
$(this).css("color", "deepskyblue");
//如果后面的值是数字,可以不加单位和引号
  • 修改多个样式
$(this).css({
    "color": "deepskyblue",
    "width": "100px"
})
//属性也可以不加引号
//例
$(this).css({
    color: "deepskyblue",
    width: 100
    height: 100
})
//遵循驼峰命名法
设置类样式方法
  • 添加样式

单独写一个样式,再用addClass添加上去

//例
$("div").addClass("current")
  • 删除样式
//例
$("div").removeClass("current")
  • 切换样式

添加样式和删除样式的切换

//例
$("div").toggleClass("current")

*与原生JS的className的区别就是jQuery的方法不会覆盖掉原先的类名

动画效果
显示隐藏切换
show([speed], [easing], [fn])
  • 三个参数可以省略
  • speed:“slow” / “normal” / “fast” 或者 毫秒数
  • easing:切换效果 默认"swing" 慢快慢 或者 “linear” 匀速
  • fn:回调函数
hide([speed], [easing], [fn])

参数用法与show()相同

toggle([speed], [easing], [fn])

参数用法与show()相同

滑动
slideDown([speed], [easing], [fn])
slideUp([speed], [easing], [fn])
slideToggle([speed], [easing], [fn])
事件切换
hover([over, ]out)
//over相当于鼠标经过 out相当于鼠标离开
//例
$("div").hover(function() {
    //鼠标经过事件
}, function() {
    //鼠标离开事件
})

//如果只写一个函数,则鼠标经过和离开都会触发这个函数
$("div").hover(function() {
    //语句
})

*当动画被多次触发,则会形成队列,直到都执行完位置

可以在动画前面加stop()来停止

淡入淡出
fadeIn([speed], [easing], [fn])
fadeOut([speed], [easing], [fn])
fadeToggle([speed], [easing], [fn])
  • 还可以修改透明度
fadeTo(speed, opacity, [easing], [fn])

opacity表示透明度,必写的参数,取值0-1

speed也必须写

//例
$("div").fadeTo(1000, 0.5)
//表示用1秒钟把div的透明度改成0.5
自定义动画
animate(params, [speed], [easing], [fn])

params:需要更改的样式属性,以对象形式传递,可加不写引号,驼峰命名法

//例
$("div").animate({
    left: 500;
})
//表示div向右移动500px
属性操作
获取固有属性
prop("属性名") //获取属性值
设置固有属性值
prop("属性名", "属性值")
获取自定义属性
attr("属性名")
设置自定义属性值
attr("属性名", "属性值")
数据缓存
data("属性名", "属性值")

在指定的元素上存取数据,并不会修改DOM元素结构,页面刷新后就会消失

*此方法获取的H5自定义属性(如data-index),返回是数字型,而且属性名不需要加data-

内容文本值
html()

相当于innerHTML

html() //获取元素的内容
html("内容") //更改元素的内容
val()

获取表单的值

val()
元素操作
遍历元素

$(selector).each()

$("div").each(function(index, domEle) {
    //语句
})
//index是索引号
//domEle是DOM元素对象
<!--例-->
<div>1</div>
<div>2</div>
<div>3</div>
<script>
	var arr = ["red", "green", "blue"]
    $("div").each(function(index, domEle) {
        $(domEle).css("color", arr[index]) //把DOM元素转化为jQuery元素后修改为不同的颜色
    })
</script>

$.each()

$.each(obj, function(index, ele) {
    //语句
})
//主要用来处理数据,比如遍历数组 对象
创建元素
//例
var li = $("<li>1</li>")
添加元素
内部添加

如ul,就是添加到ul的内部

ele.append("内容")
//例
var li = $("<li>1</li>")
$("ul").append(li)

把元素添加到内部的最后面

ele.prepend("内容")

把元素添加到内部的最前面

外部添加

添加到元素的外部

ele.after("内容")

把元素添加到最后面

ele.before("内容")

把元素添加到最前面

删除元素
ele.remove()

删除元素本身

ele.empty()

删除元素的所有子节点

ele.html("")

清空匹配的元素内容

尺寸、位置操作
宽高
ele.width() / ele.height()
//修改不带单位
ele.width(500)
包含padding的宽高
ele.innerWidth() / ele.innerHeight()
包含padding border的宽高
ele.outerWidth() / ele.outerHeight()
包含padding border margin的宽高
ele.outerWidth(true) / ele.outerHeight(true)
对于文档的偏移
offset() //返回的是一个对象,里面有left值和top值
//获取left或top
offset().left
offset().top
//修改方法
$("div").offset({
    top: 200,
    left: 200
})
对于带有定位的父级的偏移
position() //此方法只能获取 不能设置
被卷去的头部和左侧
scrollTop() / scrollLeft
//例
$(window).scroll(function() {
    console.log($(document).scrollTop())
})
事件
绑定事件
ele.on(事件, [选择器], fn)

事件可以是一个或多个

选择器是绑定事件子元素的选择器

fn为回调函数

//例
$("div").on({
    click: function() {
        
    }, 
    mouseover: function() {
        
    }
})
//若绑定的多个事件代码相同
$("div").on("mouseenter mouseleave", function() {
    
})

*若只想触发一次事件,可以用one(),用法与上述相同

事件委派

把原来给子元素的事件绑定在父元素上

//例
$("ul").on("click", "li", function() {
    
})
//事件委派实际上的作用为提高效率

*on事件绑定还可以给动态添加的元素绑定事件,如上案例,给ul动态创建了li后,添加的li也具有click事件

事件解绑

解绑所有绑定事件

//例
$("div").off()

解绑单个绑定事件

//例
$("div").off("click")

解绑事件委托

//例
$("ul").off("click", "li")
自动触发事件
//例
$("div").on("click", function() {
    //语句
})
//1.
$("div").click()
//2.
$("div").trigger("click")
//3.
$("div").triggerHandler("click")
//第三种不会触发元素的默认行为 如input的focus事件的光标闪烁
事件对象
$("div").on("click", function(e) {
    console.log(e)
})
其他方法
对象拷贝
$.extend([deep], target, object, [objectN])

deep为深浅拷贝 true深false浅

target为拷贝的目标对象

object为被拷贝的对象

浅拷贝会把被拷贝的对象里的复杂数据(如对象)的地址拷贝给目标对象,相当于多个对象中的复杂数据是同一个,所以修改目标对象的对应复杂数据值,被拷贝的对象的值也会改变,会覆盖原来的数据

深拷贝则为完全克隆,直接把复杂数据拷贝给目标对象,不会覆盖原来的数据

多库共存

若其他库也用$,则会出现冲突的情况

解决:

  • 把$换成jQuery

  • var otherName = $.noConflict()
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值