jQuery基础


目录
  • jQuery基础
    • jQuery准备工作
    • jQuery对象
    • 基本选择器
    • 基本筛选器
    • 属性选择器
    • 表单筛选器:
    • 筛选器方法
    • 节点操作
    • 位置操作
      • 尺寸:
    • 文本操作
    • 属性操作
    • 文档处理
    • 事件
      • 事件绑定
      • 移除事件
      • 阻止后续事件执行
      • 阻止事件冒泡
      • 文档加载
      • 事件委托
      • 动画效果

jQuery基础

jQuery准备工作

jQuery下载
	压缩之后的版本将很多变量名全部使用英文字母代替了
    https://jquery.com/
本地导入
	缺点在于需要提前下载文件
    优点在于不会受到网络的影响
CDN导入
	# CDN:内容分发网络
    网站:bootcdn  jquery最好使用3.4.1版本
        在下图复制script标签之后就继续往下设置pycharm
# 在pycharm中设置自动加载
settings
	Editor
    	File and Code Templates

jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。

$("#i1").html()的意思是:获取id值为 i1的元素的html代码。其中 html()是jQuery里的方法。

相当于: document.getElementById("i1").innerHTML;

虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。

一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:

var $variable = jQuery对像
var variable = DOM对象
$variable[0]//jQuery对象转成DOM对象

拿上面那个例子举例,jQuery对象和DOM对象的使用:

$("#i1").html();//jQuery对象可以使用jQuery的方法
$("#i1")[0].innerHTML;// DOM对象使用DOM的方法

基本选择器

id选择器:

$("#id")

标签选择器:

$("tagName")

class选择器:

$(".className")

配合使用:

$("div.c1")  // 找到有c1 class类的div标签

所有元素选择器:

$("*")

组合选择器:

$("#id, .className, tagName")

层级选择器:

x和y可以为任意选择器

$("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(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)

例子:

$("div:has(h1)")// 找到所有后代中有h1标签的div标签
$("div:has(.c1)")// 找到所有后代中有c1样式类的div标签
$("li:not(.c1)")// 找到所有不包含c1样式类的li标签
$("li:not(:has(a))")// 找到所有后代中不含a标签的li标签

属性选择器

$('[name]')
$('[name="jason"]')
$('input[name="jason"]')

例子:

// 示例



$("input[type='checkbox']");// 取到checkbox类型的input标签
$("input[type!='text']");// 取到类型不是text的input标签

表单筛选器

:text
:password:file
:radio
:checkbox
:submit
:reset
:button

例子:

$(":checkbox")  // 找到所有的checkbox

表单对象属性:

:enabled
:disabled
:checked
:selected

例子:

找到可用的input标签

$("input:enabled") // 找到可用的input标签

找到被选中的option:



$(":selected")  // 找到所有被选中的option

筛选器方法

下一个元素:

$("#id").next()  // 该标签同级别的下一个标签
$("#id").nextAll()  // 该标签同级别的下面所有的标签
$("#id").nextUntil("#i2")  // 该标签到下面另一标签同级别之间的标签

上一个元素:

$("#id").prev()  // 该标签同级别的上一个标签
$("#id").prevAll()  // 该标签同级别的上面所有的标签
$("#id").prevUntil("#i2")  // 该标签到上面另一标签同级别之间的标签

父亲元素:

$("#id").parent()  // 查找当前元素的父辈元素
$("#id").parents()  // 查找当前元素的所有的祖先元素
$("#id").parentsUntil("#i2") // 查找当前元素的所有的祖辈元素,直到遇到匹配的那个元素为止。

儿子和兄弟元素:

$("#id").children();  // 儿子们
$("#id").siblings();  // 兄弟们(同级)

查找

搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。

$("div").find("p")

等价于$("div p")

筛选

筛选出与指定表达式匹配的元素集合。这个方法用于缩小匹配的范围。用逗号分隔多个表达式。

$("div").filter(".c1")  // 从结果集中过滤出有c1样式类的

等价于 $("div.c1")

补充:

.first() // 获取匹配的第一个元素
.last() // 获取匹配的最后一个元素
.not() // 从匹配元素的集合中删除与指定表达式匹配的元素
.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
.eq() // 索引值等于指定值的元素

节点操作

样式类

.addClass();// 添加指定的CSS类名。
.removeClass();// 移除指定的CSS类名。
.hasClass();// 判断样式存不存在
.toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。

CSS

.css('属性名','属性值')

.css("color","red")//DOM操作:tag.style.color="red"

位置操作

.offset()// 获取匹配元素在当前窗口的相对偏移或设置元素位置
.position()// 获取匹配元素相对父元素的偏移
.scrollTop()// 获取匹配元素相对滚动条顶部的偏移
.scrollLeft()// 获取匹配元素相对滚动条左侧的偏移

.offset()方法允许我们检索一个元素相对于文档(document)的当前位置。

.position()的差别在于: .position()是相对于相对于父级元素的位移。

尺寸:

.height()
.width()
.innerHeight()
.innerWidth()
.outerHeight()
.outerWidth()

文本操作

HTML代码:

html()// 取得第一个匹配元素的html内容
html(val)// 设置所有匹配元素的html内容

文本值:

text()// 取得所有匹配元素的内容
text(val)// 设置所有匹配元素的内容

值:

val()// 取得第一个匹配元素的当前值
val(val)// 设置所有匹配元素的值
val([val1, val2])// 设置多选的checkbox、多选select的值

属性操作

用于ID等或自定义属性:

attr(attrName)// 返回第一个匹配元素的属性值
attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
removeAttr()// 从每一个匹配的元素中删除一个属性

用于checkbox和radio

prop() // 获取属性
removeProp() // 移除属性

attr()  # setAttribute()
    '''适用于属性为静态的情况(不经常修改动态变化的)'''
    prop()
    	$($(':checkbox')[1]).prop('checked',true)
    """适用于动态变化的情况 尤其是选择类标签"""
var $butEle = $('

总结一下:

  1. 对于标签上有的能看到的属性和自定义属性都用attr
  2. 对于返回布尔值的比如checkbox、radio和option的是否被选中都用prop。

文档处理

添加到指定元素内部的后面

$(A).append(B)// 把B追加到A
$(A).appendTo(B)// 把A追加到B

添加到指定元素内部的前面

$(A).prepend(B)// 把B前置到A
$(A).prependTo(B)// 把A前置到B

添加到指定元素外部的后面

$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面

添加到指定元素外部的前面

$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面

移除和清空元素

remove()// 从DOM中删除所有匹配的元素。
empty()// 删除匹配的元素内部所有的数据

替换

replaceWith()
replaceAll()

克隆

clone()// 克隆标签 括号内可以加布尔值来明确是否克隆事件

事件

绑定事件的两种方式
	方式1
    	jQuery对象.事件名(function(){})
        	$('#d1').click(function(){alert(123)})
    方式2
    	jQuery对象.on('事件名',function(){})
        	$('#d1').on('click',function(){alert(123)})
"""
有时候绑定事件可能没有效果 这个时候可以考虑切换绑定方式
	方式1不行就方式2
	方式2不行就方式1
"""

click(function(){...})
hover(function(){...})
blur(function(){...})
focus(function(){...})
change(function(){...})
keyup(function(){...})

keydown和keyup事件组合示例:




    
    
    Title




# 姓名 操作
Egon
Alex
Yuan
EvaJ
Gold

hover事件示例:




    
    Title


苍茫的天涯是我的哎,绵绵的青山脚下一片海!

实时监听input输入值变化示例:




  
  
  
  实时监听input输入值变化








事件绑定

  1. .on( events [, selector ],function(){})
  • events: 事件
  • selector: 选择器(可选的)
  • function: 事件处理函数

移除事件

  1. .off( events [, selector ][,function(){}])

off() 方法移除用 .on()绑定的事件处理程序。

  • events: 事件
  • selector: 选择器(可选的)
  • function: 事件处理函数

阻止后续事件执行

  1. return false; // 常见阻止表单提交等
  2. e.preventDefault();



    
    阻止默认事件



注意:

像click、keydown等DOM中定义的事件,我们都可以使用.on()方法来绑定事件,但是hover这种jQuery中定义的事件就不能用.on()方法来绑定了。

想使用事件委托的方式绑定hover事件处理函数,可以参照如下代码分两步绑定事件:

$('ul').on('mouseenter', 'li', function() {//绑定鼠标进入事件
    $(this).addClass('hover');
});
$('ul').on('mouseleave', 'li', function() {//绑定鼠标划出事件
    $(this).removeClass('hover');
});

阻止事件冒泡




    
    阻止事件冒泡


点我

文档加载

// 原生js文档加载方式
window.onload = function () {}
// jQuery文档加载方式01
$(document).ready(function () {})
// jQuery文档加载方式02
$(function(){})

事件委托

// 将body内部所有的点击事件委托给button按钮执行
$('body').on('click','button',function () {
// 创建一个button标签
var btnEle = document.createElement('button')
// 设置内部文本
btnEle.innerText = '点我'
// 将button标签添加到body内部
$('body').append(btnEle)
})

动画效果

  $("#d1").on("click", function () {
    var newI = document.createElement("i");
    newI.innerText = "+1";
    $(this).append(newI);
    $(this).children("i").animate({
      opacity: 0
    }, 1000)
  })