JavaWeb1——第 4 章 jQuery

第 4 章 jQuery

1.简介

  • 1)jquery 是目前最流行的一种 JavaScript 库。
  • 2)所谓 JavaScript 库就是对 JavaScript 进行进一步封装和开发,然后将其打包为 js 文件 方便重复调用。jquery 也可称为 JavaScript 框架。
  • 3) jquery 的主要功能是简化 JavaScript 的开发工作。并且基本解决了浏览器的兼容问题

2.核心函数

2.1 $是 jQuery 的核心函数。

jquery 的大部分功能都是核心函数来完成的。

2.2 核心函数根据实参的不同,有四种不同的用法

  • 传入一个函数作为参数 如:
$(function(){})
window.onload = function(){}

作用一样,在文档加载完成后调用

  • 传入一个选择器的字符串 如:
$(“#id”)
document.getElementById(“id”)

作用一样,从文档查询需要的元素

  • 传入一段 HTML 代码 如:
$(<li>广州</li>) 

作用:创建一个 li 对象

  • 传一个 DOM 对象 如:
var ele=document.getElementById(“abc”); 
var x= $(ele); 

作用:将一个 js 获取的 dom 对象转化为一个 jquery 对象。这样就可以使用 jquery 里面 的方法了

3. jQuery 对象与 dom 对象

3.1 dom 对象

dom 对象是原生的网页文档对象。可以通过 js 获取到文档对象。然后进行增删改操 作。

  • 通过原生 JS 获取的对象是 DOM 对象

3.2 jQuery 对象

jquery 对象是使用 jquery 包装后的文档对象。只有这个对象才可以调用 jquery 的方 法。 dom 对象不是 jquery 的对象,所以我们不能调用 jquery 的方法,我们需要将其包 装 为 jquery 对象才可

  • 通过 jQuery 核心函数包装过的对象叫做 jQuery 对象

3.3 比较

1)两种对象之间不能互相调用对方的方法
2)命名上的区别: jQuery 对象命名时习惯加上$,加以区分。

3.4 转换

1)DOM --> jQuery
将一个 js 获取的 dom 对象转化为一个 jquery 对象
eg:

var ele=document.getElementById(“abc”); 
var x= $(ele);

2)jQuery --> DOM
jQuery 对象[索引]
jQuery 对象的本质就是 DOM 对象的数组,所以可以通过给对象加下标的 形式获取数组中的 DOM 对象
eg:

var domObj=jqObj[0] 	

4. jQuery 选择器

4.1 选择器简介

1)jQuery 的最厉害的地方就是它拥有众多的选择器。
2)jQuery 的选择器主要是集合 CSS 和 xPath 部分语法。
3)选择器可以很方便的获取到页面中元素。

4.2 基本选择器

基本选择器是JQuery最常用的选择器,也是最简单的选择器,它通过元素id、class和标签名来查找DOM元素(在网页中id只能使用一次,class允许重复使用)。所谓的网页中id只能使用一次的意思是说,一个网页中的id是不可以重复的,也就是具有唯一性。

  • 1、#id
用法: $("#myDiv");    返回值  单个元素的组成的集合
说明: 这个就是直接选择html中的id="myDiv"
  • 2、Element
用法: $("div")     返回值  集合元素
说明: element的英文翻译过来是”元素”,所以element其实就是html已经定义的标签元素,例如div, input, a,p等等.
eg:
$("p") //所有 <p> 元素
  • 3、class
用法: $(".myClass")      返回值  集合元素
说明: 这个标签是直接选择html代码中class="myClass"的元素或元素组(因为在同一html页面中
class是可以存在多个同样值的)
eg:
$(".intro") //所有 class="intro" 的元素
  • 4、*
用法: $("*")      返回值  集合元素
说明: 匹配所有元素,多用于结合上下文来搜索
  • 5、selector1, selector2, selectorN
    选择器分组 $(“选择器 1 , 选择器 2 , 选择器 N”)
用法: $("div,span,p.myClass")    返回值  集合元素
说明: 将每一个选择器匹配到的元素合并后一起返回.你可以指定任意多个选择器, 并将匹配到的元素合
并到一个结果内。其中p.myClass是表示匹配元素

p class="myClass"
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JQuery选择器</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <style>
        div{
            background-color:dodgerblue ;
            width: 100%;
            height: 50px;
        }
        span{
            background-color:pink ;
            width: 100%;
            height: 20px;
        }
    </style>
    <script>
        $(function () {
            $("#id1").click(function () {
                $("span,#myDivId").css("backgroundColor","green");
            });
        });
    </script>
 
</head>
<body>
    <input id="id1" type="button" value="改变标签为span的元素,或者id为myDivId的元素背景变为绿色">
    <hr><hr>
    <div >
        这是div
        <span >
        这是span
        </span>
    </div>
    <br>
    <div id="myDivId">
        这是div,id为myDivId
    </div>
    <br>
    <span id="myspanid">
        这是span,id为myspanid
    </span>
</body>
</html>

4.3. 层级选择器

只有这个方法返回的是JQuery对象才能进行链式操作。如果想通过 DOM 元素之间的层次关系来获取特定元素, 例如后代元素, 子元素, 相邻元素, 兄弟元素等, 则需要使用层次选择器。

  • 1 、ancestor descendant
用法: $("form input") ;   返回值  集合元素
说明: 在给定的祖先元素下匹配所有后代元素.这个要和"arent > child"区分开。
祖先元素中查找,包含子元素和子元素的子元素。
  • 2、parent > child
用法: $("form > input") ;    返回值  集合元素
说明: 在给定的父元素下匹配所有子元素。注意:要区分好后代元素与子元素
父元素中查找,只包含子元素,不包含子元素的子元素。
  • 3、prev + next
用法: $("label + input") ;   返回值  集合元素
说明: 匹配所有紧接在 prev 元素后的 next 元素
  • 4、prev ~ siblings
用法: $("form ~ input") ;    返回值  集合元素
说明: 匹配 prev 元素之后的所有 siblings 元素.

注意:

是匹配之后的元素,不包含该元素在内,并且JQuery的siblings方法匹配的是和prev同辈的元素,其后辈元素不被匹配.

(“prev ~ div”) 选择器只能选择 "# prev"元素后面的同辈元素; 而 jQuery 中的方法 siblings() 与前后位置无关, 只要是同辈节点就可以选取

4.4. 过滤选择器

5. jQuery 筛选

以已经查到的元素为标准,再进行查询。DOM 查询

5.1 过滤

  • eq(index|-index) 获取第 N 个元素
$(“p”).eq(1)
  • first() 获取第一个元素
$(“p”).first(); 
  • last() 获取最后一个元素
$(“p”).last();

5.2 查找

  • children([expr]) 获取所有的子元素(不包括孙子<后代元素>)
  • find(expr|obj|ele) 找出所有的后代元素
  • next([expr]) 相邻后一个的元素
  • parent([expr]) 获取某元素的直接父元素
  • parents([expr]) 获取某元素的祖先元素,不包含根元素
  • prev([expr]) 获取元素的前一个元素

6. jQuery 事件

6.1 常见事件列表

  • blur([[data],fn])
  • bind()

可以给元素一次性绑定一个或多个事件(绑定多个时用空格隔开)

$("h5").one("click mouseover mouseout",funtion(){
	console.log("这是bind绑定的事件");
});
  • change([[data],fn])
  • click([[data],fn])

它可以绑定单击事件,也可以触发单击事件

  • dblclick([[data],fn])
  • error([[data],fn])
  • focus([[data],fn])
  • focusin([data],fn)
  • focusout([data],fn)
  • keydown([[data],fn])
  • keypress([[data],fn])
  • keyup([[data],fn])
  • mousedown([[data],fn])
  • mouseenter([[data],fn])
  • mouseleave([[data],fn])
  • mousemove([[data],fn])

鼠标移入事件

  • mouseout([[data],fn])

鼠标移出事件

  • mouseover([[data],fn])
  • mouseup([[data],fn])
  • one()

使用上跟bind一样,但是one方法绑定的事件只能响应一次

$("h5").one("click mouseover mouseout",funtion(){
	console.log("这是one绑定的事件");
});
  • resize([[data],fn])
  • scroll([[data],fn])
  • select([[data],fn])
  • submit([[data],fn])
  • unload([[data],fn])
  • unbind()

跟bind方法相反的操作,解除事件的绑定

$("h5").unbind("click mouseover");

$("h5").unbind(); //都删除
  • live()

也是用来绑定事件。它可以用来绑定选择器匹配的所有元素的事件。哪怕这个元素是后面动态创建出
来的也有效

$("h5").live("click",function(){
	alert('h5单击事件 == live方法绑定');
});

$('<h5 class = "head">什么是jQuery?</h5>').appendTo( $("#panel"));

6.2 事件绑定

  • 1)使用事件对应的函数进行绑定 如:
 $(“#btn”).click(function(){ 
 	alert(“我被点击啦!”); 
 	});
  • 2)使用 bind()绑定事件:
    用法:元素.bind(事件名,[参数],回调方法) 如:
 $("p").bind("click", function(){ 
 	alert( $(this).text() ); 
 	}); 

可以绑定多个事件,多个事件用空格隔开 如:

$('#foo').bind('mouseenter mouseleave', function() { 
	$(this).toggleClass('entered'); 
	}); 
  • 3)绑定一个一次性的事件,事件只会触发一次。one(); 如:
$("p").one("click", function(){ 
	alert( $(this).text() )
	});
  • 4)为当前的对象以及以后创建的对象都绑定此事件 如:
$("p").live("click", function(){ 
	alert(“我是 p!”); 
	});

6.3 解除绑定

使用 unbind()方法解除事件绑定。

  • 1) 不传参数,取消当前元素的所有事件 如:
$("p").unbind() 
  • 2)传递参数,取消某个事件 如:
$(“p”).unbind(“click”) 
  • 3)传递多个参数,用空格隔开:取消一组事件 如:
$(“p”).unbind(“click mouserover”);

6.4 事件冒泡

父子元素同时监听同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去
响应。

例子:

<div>
	<p>你好<p> 
<div> 

为 div 和 p 同时绑定点击事件。当点击 p 的时候,div 的点击事件也会被触发 ·

$(“div”).click(function(){
	alert(“我是 div”)
	}); 
$(“p”).click(function(){
	alert(“我是 p”)
	}); 
6.4.1、阻止事件冒泡

在子元素事件函数体内,return false; 可以阻止事件的冒泡传递。
eg:

$(“div”).click(function(){
	alert(“我是 div”)
	}); 
$(“p”).click(function(){
	alert(“我是 p”)
	return false;
	}); 

当我们点击 p 的时候,先弹出我是 p,又弹出我是 div。 阻止事件冒泡: return false;即可。

6.5、事件对象

7.dom 增删改

7.1 文档操作

dom 对象的增删改

  • 内部插入
append(content|fn):父.append():
父元素的最后插入子元素 

prepend(content|fn):父.prepend():
父元素的最前面插入子元素

appendTo(content):子.appendTo():
子元素添加到父元素的最后 

prependTo(content): 子.prependTo():
子元素添加到父元素的最前面
  • 外部插入
after(content|fn)A.after(B):
a 的后边插入 b 

insertAfter(content)A.insertAfter(B):
把 a 插入到 b 后边

before(content|fn)A.before(B):
a 的前边插入 b 

insertBefore(content)A.insertBefore(B):
把 a 插入到 b 的前边
  • 替换
replaceWith(content|fn)A.replaceWith(B)AB 替换(A 不存在,B 存在) 

replaceAll(selector)A.replaceAll(B)A 替换所有 BB 不存在,A 存在) 
  • 删除
empty()A.empty():
将 A 元素下的子元素全部删除(将 A 置空,子元素没有,A 还在) 
remove([expr])A.empty():
将 A 元素删除(A 不存在) 
  • 复制
clone([Even[,deepEven]])A.clone():
克隆 A 元素并选中克隆的副本

7.2 属性操作

dom 对象属性的增删改

  • 属性
  • attr(name|pro|key,val|fn)
    获取属性值:$("img").attr("src");
    设置属性值:$("img").attr("src","test.jpg");
    设置多属性:$("img").attr({ src: "test.jpg", alt: "Test Image" });
  • removeAttr(name)
    移除属性:$("img").removeAttr("src");
  • prop(name|pro|key,val|fn)1.6+
    一般用来操作内置属性
    获取属性值:$("input[type='checkbox']").prop("checked");
    设置属性值:$("input[type='checkbox']").prop("checked",true);
    设置多属性:$("input[type='checkbox']").prop({ disabled: true});
  • removeProp(name)1.6+
    移除属性:$('div').removeProp('style')
7.2.1 CSS 类
  • addClass(class|fn) :
    A.addClass(“selected1 selected2”):为 A 添加两个 class
  • removeClass([class|fn]) :
    A.removeClass(“selected1 selected1”):删除 A 的两个 class,
    A.removeClass():删除 A 的所有 class
  • toggleClass(class|fn[,sw]) :
    A.toggleClass(“highlight”): 切换 A 的 class,如果有 highlight 移除,如果没有添加
7.2.2 HTML 代码/文本/值
  • html([val|fn]) :

    获取 html 内容:A.html();

    设置 html 内容:A.html(“<a href=’#’>链接</a>”);

  • text([val|fn])

    获取文本内容:$('p').text();

    设置文本内容:$("p").text("Hello world!");

  • val([val|fn|arr])

    获取表单元素值:$("input").val();

    设置表单元素值:$("input").val("hello world!");

7.3 css 操作

dom 对象样式的增删改

7.3.1 CSS
  • css(name|pro|[,val|fn]) :
    获取 css 值:$("p").css("color");
    设置 css 值:
$("p").css({ color: "#ff0011", background: "blue" }); $("p").css("color","red");
7.3.2 位置
  • offset([coordinates])
  • position()
  • scrollTop([val])
  • scrollLeft([val])
7.3.3 尺寸
  • heigh([val|fn])
  • width([val|fn])
  • innerHeight()
  • innerWidth()
  • outerHeight([soptions])
  • outerWidth([options])

8. jQuery 动画

  • 1)show([speed,[easing],[fn]]);
    显示隐藏的元素:
$("p").show()$("p").show("slow"); 
  • 2)hide([speed,[easing],[fn]]);
    隐藏显示的元素:
$("p").hide()$("p").hide("slow"); 
  • 3)toggle([speed],[easing],[fn]);
    切换元素的显示状态
    用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。 如果元素是可见的,切换为隐藏的;
    如果元素是隐藏的,切换为可见的。
$(‘p’).toggle(); //显示隐藏 p 
$(‘p’).toggle("slow"); 
$('#foo').toggle(showOrHide); 
// showOrHide 是个 true 或者 false 值,如果这个参数 为 true ,那么匹配的元素将显示;如果 false ,元素将隐藏

9、 jQuery 事件操作

$(function(){})
window.onload = function(){}
  • 触发时间:

1、jQuery的页面加载完成之后是浏览器的内核解析完页面的标签创建好DOM对象之后就会马上执行。
2、原生js的页面加载完成之后,除了要等浏览器内核解析完标签创建好DOM对象,还要等标签显示时需要的内容加载
完成。

  • 触发顺序:

1、jQuery 页面加载完成之后先执行
2、原生js的页面加载完成之后

  • 执行次数

1、原生js的页面加载完成之后,只会执行最后一 次的赋值函数。
2、jQuery 的页面加载完成之后是全部把注册的function 函数,依次顺序全部执行。

事件绑定与触发的区别
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值