jQuery节点操作

news2024/9/29 9:25:37

jQuery常用技术

1.jQuery获取元素

2.jQuery与js对象转换

3.jQuery中的遍历方式

4.jQuery中的事件绑定

1. jQuery介绍

img

1.1 jQuery概述

在JavaScript的使用过程中,存在很多问题,例如:兼容问题(咱不考虑),元素获取方式单一(只能用基本的选择器)等等,因此就出现了很多第三方的封装库(将复杂的、麻烦的功能进行封装,提供给用户一种简单的、可直接调用的形式进行使用),在众多的第三方库中脱颖而出的就是jQuery。

理念:写的少,做的多。(用更少的代码做更多的事情)

注意:jQuery中提供的函数或对象与js中的函数或对象是没有关系的。

2. jQuery基本使用

2.1 对象获取

2.1.1 基本选择器

//基本选择器
//使用js进行获取
var btns = document.getElementsByTagName("button");
var btns2 = document.getElementsByClassName("btn");
//使用jQuery的形式获取 jQuery的形式获取到的元素都是一组元素
//命名的时候为了和js的变量进行区分,通常jQuery的变量前面都会加上一个$
var $btns = $('button');
var $btns2 = $('.btn');
//典型错误:$ is not defined 该错误的出现意味着jQuery的文件未加载成功
console.log($btns);
console.log($btns2);

2.1.2 属性及伪类选择器

使用css2提供的属性选择器及css3提供的伪类选择器可以更快捷的选择元素

Css3 []

//css2/3中提供的选择器
//获取除了submit按钮之外的其他的input标签
var $inNodes = $('input:not([type="submit"])');
console.log($inNodes);
console.log("--------灵魂分割线----------");
var $btns3 = $('button:nth-of-type(2n+1)');
console.log($btns3);
//jQuery中提供的常用选择器
console.log($('button:eq(1)'));//=
console.log($('button:gt(1)'));//>
console.log($('button:lt(1)'));//<

2.1.3 获取对象-过滤选择器

jQuery中大多数的操作都是以函数的形式存在的,对于元素的获取同样提供了对应的函数

//jQuery中提供的常用过滤器
console.log($('button').eq(1));
console.log($('input[type="text"]').next());
console.log($('button').parent());
console.log($('button').parent().children('button:eq(0)'));

2.2 获取及修改元素的值

jQuery中获取到的元素都是以组的形式存在的,元素值的三种操作方式结合API详细了解

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 100px;
            width: 100px;
            background-color: chartreuse;
        }
    </style>
    <!-- 引入jquery -->
    <script src="../js/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="d1"></div>
    <input type="text" id="i1" value="默认值">
    <input type="text" id="i2">
</body>
<script>
    //通过jquery选择器选择对应的jquery对象
    //类似于java中的封装 Java中的类封装后不允许通过.属性进行操作 而是提供了对应属性操作的方法
    //jquery对dom封装后 不能直接使用dom对象的属性(因为获取的不是dom对象而是jquery对象)
    //jquery为常用属性额外定义的对应的方法 也定义的通用的属性操作方法
    //对innerHTML  与innerTEXT提供的方法
    var $d1 = $("#d1")
    //方法如果传入参数就是修改 没有传入参数就是获取
    $d1.html("修改内容")//等价于innerHTML属性的修改

    console.log($d1.html())//没有设置属性就是获取操作


    //对value属性的操作
    var $i1 = $("#i1");
    //jquery所有方法修改后返回的是当前jquery对象
    var $t = $i1.val("修改后的值")
    console.log($i1 == $t)


    //通用属性操作 attr方法
    //需要填入操作的属性名
    //如果只填入属性名 就是获取指定属性的值 如果将值也填入就是修改
    var $i2 = $("#i2");
    console.log($i2.attr("type", "text"))


    var $input = $("input");
    //jquery内置迭代 如果当前jquery对象代表多个dom标签 那么会将所有标签同时操作
    //  $input.val("aaaa")

    //由于返回值只能有一个 所以当前jquery对象代表对个标签获取值时 默认返回第一个dom对象的值
    console.log($input.val())
</script>

</html>

2.3 获取及修改样式

多样式的修改语法与json的使用相同,其复合属性可使用"-"链接也可以首字母大写链接

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 100px;
            width: 100px;
            position: absolute;
            left: 50px;
            top: 20px;
            background-color: chartreuse;
        }
    </style>
    <!-- 引入jquery -->
    <script src="../js/jquery-3.6.0.min.js"></script>

</head>

<body>
    <div id="d1"></div>
    <input type="text" id="i1" value="默认值">
    <input type="text" id="i2">
</body>


<script>
    //通过jquery选择器选择对应的jquery对象
    //类似于java中的封装 Java中的类封装后不允许通过.属性进行操作 而是提供了对应属性操作的方法
    //jquery对dom封装后 不能直接使用dom对象的属性(因为获取的不是dom对象而是jquery对象)
    //虽然样式也是属性的异同也可以通过修改属性方法修改  但是很不方便
    //jquery同样对常用样式额外提供了方法  并且提供了通用样式操作方法
    var $d1=$("#d1");

    //获取对应宽高数值
    console.log($d1.width());
    console.log($d1.height());

    //样式通用方法
    $d1.css("left","100px");
    $d1.css("top",100);

    console.log($d1.css("top"));
    //但是在css样式设置时通常会设置多个样式

    //jquery提供的css方法可以解析json格式数据  可以使用json形式填入多个样式修改
    $d1.css({"width":"200px","height":"200px","background-color":"red"});

</script>

</html>

3. jQuery和js对象之间的转换

jQuery对象只能使用jQuery中提供的函数或属性,同样的jQuery中的属性或函数只能由jQuery对象调用.

JS对象只能使用JS中提供的函数或属性,同样的JS中的属性或函数只能由JS对象进行调用

3.1 jQuery对象转js对象

jQuery中提供了get(index)函数用于对象的转换,同时可以使用数组下标的形式进行转换

//获取元素使用jquery
var $btn = $('button');
//将jQuery对象转换为js对象
//var btn = $btn[0]; //利用数组本身的特性(下标)
var btn = $btn.get(0); //jQuery本身提供的一种转换函数
btn.onclick = function(){
    //将js对象转换为jQuery对象 this是js对象 $(js对象)
    //console.log(this.innerHTML);
    console.log($(this).html());
}

3.2 js对象转jQuery对象

js对象转jQuery对象只需要满足jQuery的格式要求即可,使用$()包裹js对象后就是jQuery对象

//js对象
var btn = document.getElementsByTagName("button")[0];
//$()包裹js对象即可转为jQuery对象
var $btn = $(btn);
$btn.css('background','red');
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 100px;
            width: 100px;
            position: absolute;
            left: 50px;
            top: 20px;
            background-color: chartreuse;
        }
        img{
            position: absolute;
        }
        img:nth-of-type(1) {
            height: 500px;
            width: 500px;
            border-radius: 500px;
        }
        img:nth-of-type(2) {
            left: 530px;
            top: 150px;
            height: 200px;
            width:200px;
            border-radius: 500px;
        }
    </style>
    <!-- 引入jquery -->
    <script src="../js/jquery-3.6.0.min.js"></script>
    <script src="../js/jquery-rotate.js"></script>

</head>

<body>
    <div id="d1"></div>
    <input type="text" id="i1" value="默认值">
    <input type="text" id="i2">

    <img src="/img/cm1.jpg" alt="">
    <img src="/img/cm1.jpg" alt="">
</body>


<script>
    //通过jquery选择器选择对应的jquery对象
    //类似于java中的封装 Java中的类封装后不允许通过.属性进行操作 而是提供了对应属性操作的方法
    //jquery对dom封装后 不能直接使用dom对象的属性(因为获取的不是dom对象而是jquery对象)
    //虽然样式也是属性的异同也可以通过修改属性方法修改  但是很不方便
    //jquery同样对常用样式额外提供了方法  并且提供了通用样式操作方法
    var $d1 = $("#d1");

    //获取对应宽高数值
    console.log($d1.width());
    console.log($d1.height());

    //样式通用方法
    $d1.css("left", "100px");
    $d1.css("top", 100);

    console.log($d1.css("top"));
    //但是在css样式设置时通常会设置多个样式

    //jquery提供的css方法可以解析json格式数据  可以使用json形式填入多个样式修改
    $d1.css({ "width": "200px", "height": "200px", "background-color": "red" });
    $d1.css({ "left": 400, "top": 400 });
    var i = 1;
    setInterval(function () {
        $("img:nth-of-type(1)").rotate(i += 1)
    }, 1)

    var j = 1;
    setInterval(function () {
        $("img:nth-of-type(2)").rotate(j -= 1)
    }, 1)

</script>

</html>

4. jQuery中的遍历形式

数组、集合或json对象的遍历,jQuery中提供了新的更简洁的遍历形式

4.1 遍历节点

$(‘选择器’).each(function(index,element){}),该写法是用于遍历获取到的元素对象

//目的:输出元素的内容 函数中不带参数
/* $('button').each(function(){
		console.log(this.innerHTML);
	}) */
//函数中带有一个参数,该参数代表下标
/* $('button').each(function(index){
		console.log(index);
	}) */
//参数一:下标,参数二:对象
$('button').each(function(index,element){
    console.log(index,element.innerHTML);
});

4.2 遍历数组或集合 *

$.each(data,function(key,value){}),主要用于遍历数组或json对象等

//遍历指定的集合数据,参数一:代表要遍历的集合对象,参数二:函数
var arr = ["张飞","刘备","关羽"];
/* $.each(arr,function(){
		console.log(this);
	}) */

/* $.each(arr,function(index){
		console.log(index);
	}) */

$.each(arr,function(index,element){
    console.log(index,element);
})
***
var json = {"name":'张飞',"age":13};
$.each(json,function(key,val){
    console.log(key,val);
})

5. jQuery事件绑定

js中的所有事件都是以on开头的,在jQuery中是都不加on的

5.1 ready事件

ready事件是jQuery提供的当DOM元素加载完毕后执行的函数

ready和onload的区别:

1、onload事件是在页面的DOM结构及图片资源都加载完毕后执行的,而ready事件是在DOM结构加载完后执

2、onload事件只能使用一次,ready事件可使用多次

 //onload是在页面结构都加载完毕(DOM树结构及图片资源)后才开始执行其中的代码
window.onload = function(){
    var btn = document.getElementsByTagName("button")[0];
    btn.onclick = function(){
        alert(this.innerHTML);
    }
} 
window.onload = function(){  //2个onolad无法同时执行,后面会覆盖前面的;
    var btn = document.getElementsByTagName("button")[0];
    btn.onclick = function(){
        alert("hahaha");
    }
} 
 $(document).ready(function(){
     $('button').click(function(){
         alert($(this).html());
     })
 })

 $(function(){
     $('button').click(function(){
         alert($(this).html());
     })
 })

在js中是无法直接给一组元素绑定事件的,但是在jQuery中可以

$('button').click(function(){
    alert($(this).html())
})
$('button').click(show)
function show(){
    alert($(this).html())
}

5.2 焦点事件

当元素获取焦点及失去焦点时触发该事件,失去焦点blur,获取焦点focus

//焦点事件,当输入框获取到焦点时改变其背景颜色
$('input').focus(function(){
    $(this).css('background-color','pink')
})
//失去焦点事件,当输入框失去焦点时将背景变为白色
$('input').blur(function(){
    $(this).css('background-color','white')
})

5.3 表单提交事件

submit事件简化了js中的表单提交事件

//该函数的目的是为了验证表单中的数据,并给出验证的结果
function check(){
    return false;
}

 //找对象  定事件  匿名函数
        $('form').submit(function(){
            //可以用来判断,当在这里写一堆代码,成功的时候,提交return true; 失败的时候false;
            let uname=$('#uname').val(); 
            let pwd=$('#pwd').val();
            if(uname=='admin' && pwd=='admin')
                return true;
            else
                return false;
        });

5.4 on事件绑定

在jQuery中提供了多种事件绑定的函数,根据版本的迭代更新,目前常用的主流的是on事件,其他的事件有:bind/unbind,live/die,delegate/undelegate。

5.4.1 on单事件绑定

通过on给元素绑定单个事件

var divNode = $('div')[0];
//需要指定要绑定的事件名,函数
$('button').on('click',function(){
    //创建元素
    var pNode = document.createElement('p');
    //赋值
    pNode.innerHTML = "show you";
    //添加到div中
    divNode.appendChild(pNode)
})

//需求:在点击P标签后显示p标签中的内容
var $pNodes = $('p');
$pNodes.on('click',function(){
    console.log($(this).html());
})

//语法:父元素对象.on(事件名,子元素,function(){})
$('div').on('click','p',function(){
    console.log($(this).html());
})

5.4.2 on绑定多个事件

通过on同时给元素绑定多个事件

$('input').blur(function(){
    var phone = $(this).val();
    var $span = $(this).next();
    if(phone.length!=11){
        $span.html('手机号错误')
        $span.css('color','red')
    }else{
        $span.html('')
    }
})
$('input').focus(function(){
    $(this).next().html('请输入11位手机号');
    $(this).next().css('color','black')
})

$('input').on({
    'blur':function(){
        var phone = $(this).val();
        var $span = $(this).next();
        if(phone.length!=11){

            $span.html('手机号错误')
            $span.css('color','red')
        }else{
            $span.html('')
        }
    },
    'focus':function(){
        $(this).next().html('请输入11位手机号');
        $(this).next().css('color','black')
    }
})

5.4.3 on后添加的元素绑定事件

针对通过动态添加到页面中的元素进行事件绑定(此处先做了解,动态增删时演示案例)

语法:$(已存在的父元素).on(事件名,子元素选择器,函数)

//给删除标签添加点击事件
$('table').on('click','.del',function(){
    $(this).parent().parent().remove()
})

5.5 事件冒泡

事件冒泡指事件向上传递-通常存在于具有包裹关系的元素中

body> 包含 div,div又包含button

$('button').click(function(){
    alert('btn up');
})
$('div').click(function(){
    alert('div up')
})
$('body').click(function(){
    alert('body up')
})

如何阻止事件冒泡?

只要有事件的存在就一定有事件源-event

阻止事件冒泡:event.stopPropagation();

$('button').click(function(event){
    event.stopPropagation();
    alert('btn up');
})

本章小结

1.jQuery获取到的元素都是以组的形式存在的

2.jQuery的对象不能使用js中的属性或函数

3.jQuery中的操作基本都是以函数的形式存在的,js中的操作多数以属性的形式存在

4.on的单事件绑定与直接对元素进行事件绑定是一样的,灵活选择

body> 包含 div,div又包含button

$('button').click(function(){
    alert('btn up');
})
$('div').click(function(){
    alert('div up')
})
$('body').click(function(){
    alert('body up')
})

如何阻止事件冒泡?

只要有事件的存在就一定有事件源-event

阻止事件冒泡:event.stopPropagation();

$('button').click(function(event){
    event.stopPropagation();
    alert('btn up');
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音矩阵号管理系统源码开发及布局流程

“账号矩阵”运营是一种账号运营的高阶玩法&#xff0c;指一个运营主体同时开设多个平台多个账号利用品牌联动的形式来实现账号之间的相关引流&#xff0c;以账号组的形式实现企业营销价值最大化。那么运营多个账号&#xff0c;短视频平台内容是核心&#xff0c;势必要招募多个…

前端Vue自定义精美宫格菜单按钮组件 可设置一行展示个数 可设置成九宫格 十二宫格 十五宫格

前端Vue自定义精美宫格菜单按钮组件 可设置一行展示个数 可设置成九宫格 十二宫格 十五宫格 &#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13315 效果图如下&#xff1a; # cc-categoryMenu #### 使用方法 使用方法…

js实现 无限层级 树形数据结构

创建数据 const list []; for (let i 0; i < 1000; i 200) {if (i 0) {list.push({ id: i - 1, age: 年龄- (i - 1) });list.push({ id: i, age: 年龄- i, parentId: -1 });} else {for (let index i - 199; index < i; index) {list.push({ id: index, age: 年龄…

LED显示屏出现花屏故障怎么办

LED显示屏出现花屏故障时&#xff0c;可以尝试以下几个步骤来解决问题&#xff1a; 检查电源连接&#xff1a;确保LED显示屏的电源连接正常并牢固。检查电源线、插头和插座&#xff0c;确保它们没有松动或损坏。 检查信号源&#xff1a;检查LED显示屏的信号源&#xff0c;如视频…

现在低代码平台推进阻力那么大,有没有最好的解决办法?

前言 低代码是一种快速设计和开发软件应用程序并且手动编码最少的方法。通过在图形界面中使用可视化建模来组装和配置应用程序&#xff0c;开发人员可以跳过所有基础架构让开发速度提升起来。 一、发现问题 1.“在踏出一步之前&#xff0c;首先考虑能否退回去” 现在低代码平…

ACWing算法基础课

y总说 java不能用Scanner读入,要用Buffer.read();快十倍二十倍; 第一讲 基础算法 包括排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并等内容。 快速排序 一定要先移动end(就是把大数移到右边),后移动start; 否则 先找小数,会出现end start重合…

Python capitalize()函数使用详解,Python首字母大写

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 capitalize 1、返回的是新字符串2、转换规则3、转换列表的元素4、指定位置转换 c…

MySQL数据库的增、删、改、查案例,和常用语句

一、案例要求 二、解答过程 第一题 1、创建数据库Markte mysql> create database Market; mysql> use Market; 2、创建数据表customers&#xff0c;在c_num字段上添加主键约束和自增约束&#xff0c;在c_birth字段上添加非空约束 mysql> create table customers(…

Ae 效果:CC Threshold RGB

风格化/CC Threshold RGB Stylize/CC Threshold RGB CC Threshold RGB&#xff08;CC 阈值 RGB&#xff09;效果可以为红、绿、蓝三个原色通道分别设置阈值&#xff0c;即&#xff0c;通道上高于此阈值时为纯白&#xff0c;低于此阈值时纯黑&#xff0c;以实现对原色通道的二值…

JavaWeb 笔记——4

JavaWeb 笔记——4 一、JSP1.1、JSP概述1.2、JSP快速入门1.3、JSP原理1.4、JSP脚本1.5、JSP缺点1.6、EL表达式1.7、JSTL标签1.8、MVC模式和三层架构 二、介于三层框架下的案例2.1、准备环境2.2、查询所有2.3、添加2.4、修改2.4.1、修改-回显数据2.4.2、修改-修改数据 2.5、删除…

windows利用ffmpeg采集摄像头画面,支持服务启动,支持一键启动

项目情况 1. 我们再windows 系统下采用ffmpeg去采集笔记本电脑摄像头的时候需要先获取摄像头的信息 2. 因为每台电脑摄像头的信息不一样&#xff0c;如果名称不对会导致不能采集 解决方案 bat脚本实现&#xff0c;先去获取摄像头信息&#xff0c;筛选出摄像头的信息&#…

从视频源头到边缘智能:实现端到端AI解决方案的技术挑战与实践

从视频源头到边缘智能&#xff1a;实现端到端AI解决方案的技术挑战与实践 引言端到端AI解决方案打通视频源头采集视频传输和存储边缘计算和盒子设备 SDK示列 引言 随着人工智能技术的快速发展&#xff0c;端到端AI解决方案在各个领域的应用越来越广泛。这些解决方案能够实现从…

Git的使用--如何将本地项目上传到Github(三种简单、方便的方法)(二)(详解)

一、第一种方法&#xff1a; 1.首先你需要一个github账号&#xff0c;所以还没有的话先去注册吧&#xff01; https://github.com/ 我们使用git需要先安装git工具&#xff0c;这里给出下载地址&#xff0c;下载后一路&#xff08;傻瓜式安装&#xff09;直接安装即可&#x…

代码练习错误记录

更新数据库时报错 Exception in thread "main" java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near WHERE ID1 at line 1原因&#xff1…

Maven高级(一)--分模块设计与开发

一.Maven回顾 Maven是一款构建和管理java项目的工具。 如果我们需要开发一些中大型的项目&#xff0c;仅凭基础知识难以应付&#xff0c;所以我们接下来还需要学习Maven提供的一些高级功能&#xff0c;这些功能在中大型项目应用是非常多的。 Maven的高级内容包括&#xff1a;【…

vue3向对象中添加属性

使用场景&#xff1a;后端返回一个数组对象结构&#xff0c;会出现可能需要前端自己向对象中添加一个新的字段 在vue2中我们常常会遇到明明已经改变了数据&#xff0c;视图却没有实时更新这样的问题 这时vue2就提供了一个方法就是$set this.$set(this.userInfo, age, 12)但是在…

计算机组成原理综合实验设计:基于proteus的小型CPU的设计

基于proteus的小型CPU的设计 摘要 本文详细介绍了该小型CPU的设计模板及预估实现的功能&#xff0c;然后对模块的原理进行详实的概述。之后对项目设计进行了分析&#xff0c;从原理图和电路设计图方面进行了完整的呈现。在介绍完基本的设计框架后&#xff0c;本文对项目中的每…

Linux系统编程:文件描述符和重定向

目录 一. 文件描述符 1.1 什么是文件描述符 1.2 OS如何通过文件描述符找到指定文件 1.3 文件描述符的分配规则 二. 重定向 2.1 重定向的现象和底层原理 2.2 通过系统接口dup2实现重定向 三. 总结 一. 文件描述符 1.1 什么是文件描述符 Liunx操作系统为用户提供了四…

微积分习题课

目录 例题1&#xff1a; 例题2&#xff1a; 解法2&#xff1a; 例题3&#xff1a; 例题4&#xff1a; 方法2&#xff1a; 例题5&#xff1a; 例题6&#xff1a; 例题7&#xff1a; 例题8&#xff1a; 例题9&#xff1a; ​编辑 例题1&#xff1a; 例题2&#xff1a; 解法2&…

二元函数的泰勒展开

定理如下&#xff1a; 证明如下&#xff1a; 注意&#xff1a; 证明的核心要点是转化为关于新的变量的一元函数。