前端之JQuery

前端之jQuery

1.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对象变量的时候在变量名前面加上$:

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

使用注意事项:

​ 一定要先导入后再使用

2.基础语法

$(selector).action()

//样式演变,原本应该
jQuery();
//为了简化
$();

3.查找标签

基本选择器

id选择器

$('#id')

标签选择器

$('tagName')

class选择器

$('.className')

配合使用

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

所有元素选择器

$('*')

组合选择器

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

层级选择器

x和y可以为任意选择器

$('x y') // x的所有后代y
$('x>y') // x的所有儿子
$('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标签

表单筛选器

//针对表单内的标签
$('input[type="text"]')
//简化写法
$(':text')


// 找到所有被选中的checkbox
$(':checkbox')  //注意select框中默认selected标签也会被找到

$('input:checkbox')

筛选器方法

//避免#('input:first')太麻烦
$('input').first()

$('#id').next()
$('#id').nextAll()
$('#id').nextUntil('#i2')  //不包含i2


$('#id').prev()  //取上面的标签
$('#id').prevAll()
$('#id').prevUntil('#i2')  


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


$('#id').children(); //儿子们
$('#id').siblings(); //兄弟们

jQuery链式操作

<div>
    <p>p1</p>
	<p>p2</p>
<div>

$('div>p').first().addClass('c1').next().addClass('c2');

//python代码诠释链式调用,其实就是在调用方法之后将对象再次返回

查找

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

$('div').find('p')  // 等价于$('div p')

筛选

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

$('div').filter('.c1') //从结果集中过滤出有c1样式类的,等价于$('div.ci')

4.操作标签

样式操作

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

jQuery操作模态框显隐(类添加隐藏类)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jQuery-3.4.1.js"></script>
    <style>
        .cover {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: rgba(128,128,128,0.3);
            z-index: 999;
        }
        .modal {
            position: fixed;
            top: 50%;
            left: 50%;
            width: 400px;
            height: 200px;
            margin-top: -100px;
            margin-left: -200px;
            z-index: 1000;
            background-color: white;
        }
        .hide {
            display: none;
        }
    </style>
</head>
<body>
<button id="show">出来吧</button>


<div class="cover hide"></div>
<div class="modal hide">
    <p>username:<input type="text"></p>
    <p>password:<input type="text"></p>
    <button id="cancel">消失吧</button>
</div>


<script>
    let b1Ele = $('#show')[0];
    let $cEle = $('.cover');
    let $mEle = $('.modal');
    let b2Ele = $('#cancel')[0];
    b1Ele.onclick = function () {
        $cEle.removeClass('hide');
        $mEle.removeClass('hide');
    };
    b2Ele.onclick = function () {
        $cEle.addClass('hide');
        $mEle.addClass('hide');
    }
</script>
</body>
</html>

5.位置操作

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

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

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

6.尺寸

height()  //文本
width()  
innerHeight()  //文本+padding
outerHeight()  //文本+padding+border
outerWidth()

7.文本操作

HTML代码

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

文本值

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

val()  //取得第一个匹配元素的当前值
val(val)  //设置所有匹配元素的值
val([val1,val2])  //设置多选的checkbox、多选select的值
posted @ 2019-06-03 21:07  ymg-颜  阅读(166)  评论(0编辑  收藏  举报