四方显神

导航

六小时jQuery-jQuery都在这里咯

jQuery是一个快速简洁的JS框架(代码库)。jQuery设计宗旨是少写多做,核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的CSS选择器,并且可以对选择器进行拓展;拥有便捷的插件拓展机制和丰富的插件。

jQuery兼容各种主流浏览器

jQuery引入:bootCDN里很多可以用,自己引就好了,例如:https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js

    <!-- 远程访问 -->
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <!-- 本地导入 -->
    <script src="jquery3.7.1.js"></script>

jQuery语法:

$().方法()

$就是jQuery类的简写,加括号就是在实例化,就是查找标签;.方法就是在操作标签。

多以jQuery的学习过程也和js的学习过程一样,就是查找标签+操作标签。

零、jQuery对象和dom对象

$(".c1 li") // 这样选中的是一个集合的概念,集合里存的就是我们的一个个的dom对象

那么我们想要dom对象就使用索引的方法:(使用dom对象调用dom方法比如innerHTML这些)

// 将jQuery对象转化为dom对象
$(".c1 li")[0]

// 将dom对象转化为jQuery对象
var ele = document.querySelector(".c1 li");
$(ele)

一、jQuery选择器

jQuery选择器其实就是CSS的那套。就是在此基础上扩展了几个。

 

模仿的是CSS选择器器,只不不过在使⽤用jQuery选择器器时,我们⾸首先必须使⽤用“$()”函数来包装我们的 CSS 规则。 ⽽CSS规则作为参数传递到jQuery对象内部后,再返回包含⻚页⾯面中对应元素的 jQuery 对象。

随后可以进⾏行行节点操作,例如: $('#box').css('color', 'red');

那么除了 ID 选择器之外,还有两种基本的选择器,分别为:元素标签名和类(class)。

基本选择器:

 层次选择器:

 过滤选择器:(筛选器,css没有的部分)

 内容过滤选择器:

 属性过滤选择器:

 

 子元素过滤选择器:

 表单过滤选择器:

 表单选择器:

 jQuery的导航查找:

    <script>
        $(function () {
       // 获取匹配元素的子元素(亲儿子)集合
            console.log($('.box').children());
            console.log($('.box').next());
            // 获取老爹
            console.log($('ul li').parent());
            // 获取的祖先辈们
            console.log($('ul li').parents());
            console.log($('.box2').prev());
            $('ul li').eq(2).css('color','red');
        })
    </script>

二、jQuery绑定事件

dom绑定事件:

dom.onclick = function(){

  this: 代指的是触发事件的标签

}

jQuery绑定事件:

jQuery对象.click(function(){

  // 事件函数

  // 里面的this和dom一样代指的是同一个东西,也是一个dom对象

})

jQuery事件绑定的优点是可以同时选定多个标签进行事件绑定。

1.jQuery绑定事件方式1(简易版本):

$().click(function(){ }) 其实就是jQuery对象.click(function(){ }) 

     $("c1").click(function (){
         console.log(this); //这里的this其实也是个dom对象
         console.log(this.innerHTML);
         // 但是我们使用jQuery的时候不想用dom对象,只需要将dom对象转换成jQuery对象,
         // jQuery对象.html() 就等同于dom对象.innerHTML
         $(this).html()
     })

2.jQuery绑定事件方式2(bind版本):

$().bind('click',function(){ } )

了解即可,不常用,代码我也不写了

3.jQuery绑定事件方式2(on版本):

$().on('click',function(){ } )

4.jQuery的ready事件

加载事件

$(document).ready(function (){
  // ...
})
$(function (){
  // ...简写,效果完全等同于上面的语法
})

5.jQuery的hover事件

悬浮和离开元素触发的事件,组合事件

    $(".c2").hover(mouseover,mouseout); // 这里,又为什么不加括号啊
    function mouseover(){
        console.log("over");
    }
    function mouseout(){
        console.log("out");
    }

三、jQuery操作标签

文本操作

value操作 :针对input,select,textarea标签

属性操作

其实就是和js完全一样,就是完全一样的一套。

dom对象.value 等同于 jQuery对象.val()

1.文本操作

2.值操作

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>

<body>
<div id="content">
<ul>
<li>

</li>
</ul>
<input type="text" value='美女'>
<select name="" id="single">
<option>苹果</option>
<option>香蕉</option>
</select>

<select name="" id="multiple" multiple>
<option selected>苹果</option>
<option>香蕉</option>
<option selected>橘子</option>
</select>
<input type="checkbox" value='A'> A
<input type="checkbox" value='B'> B
<input type="radio" value='1'> 男
<input type="radio" value='0'> 女
</div>
<script src="./jquery-3.4.1.js"></script>
<script>
$(function () {
// 获取html中的值 既获取文本又获取html
console.log($('#content ul li').html());
// 设置html中的值
$('#content ul li').html(`<img src="./timg.jpg" alt="">
<p>小马哥</p>
<h3>美女和野兽</h3>`);
// 仅仅获取文本的值
// console.log($('#content ul li').text());
// 获取文本输入框的值
// console.log($('input[type=text]').val());
// $('input[type=text]').val('帅哥');

$('#single').val('香蕉');
$('#multiple').val(['香蕉','橘子']);
// 给input设置值 要使用value属性值的值 不能使用文本的值
$('input').val(['B','女']);

})
</script>
</body>

</html>

3.属性操作:

非表单的属性用attr

表单属性用prop,表单没有设置属性的时候使用attr获取到会是undefined,但使用prop获取到就是布尔值,很方便。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #box{
            width: 200px;
            height: 200px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <div name = 'b' class='active'></div>
    <img src="" alt="">

    <script src="./jquery-3.4.1.js"></script>
    <script>
    // 动态添加获取属性
    $(function() {
        // 设置单个属性值
        // $('div').attr('id','box');
        // 设置多个值
        $('div').attr({id:'box',title:'盒子'});
        console.log($('div').attr('name'));
        console.log($('div').attr('class'));
        setTimeout(function() {
            $('img').attr({
                src:"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1568985509549&di=0bb1a6ced3db2b6be69d27579691f4e1&imgtype=0&src=http%3A%2F%2Fwww.chinadaily.com.cn%2Fhqzx%2Fimages%2Fattachement%2Fjpg%2Fsite385%2F20120924%2F00221918200911ca40e52b.jpg",
                alt:'美女'
            })
        }, 2000);
        
    })
    
    </script>
</body>
</html>

4.jQuery的css操作

css样式操作

获取样式:
$().css("样式属性"); 获取元素的指定样式属性的值,如果有多个元素,只得到第一个元素的值

操作样式:
$().css("样式属性","样式值").css("样式属性","样式值");
$().css({"样式属性1":"样式值1","样式属性2":"样式值2",...});
$().css("样式属性":function(){
  // 其他代码操作
  return "样式值";
})

css属性操作

$().addclass() 给获取到的所有元素添加class样式
$().removeclass()
$().toggleclass() 给获取到的所有元素进行判断,如果有指定class样式则删除,没有就添加(什么东西)

5.jQuery的链式操作

链式操作就是方法里面return了一个self本身,就可以写成一连串的样子。

6.jQuery节点操作

创建节点

  • document.createElement("标签名")

插入节点

  • node.appendChild(newNode)
  • node.insertBefore(newNode,某个节点)

删除节点

  • node.removeChilid()

替换节点

  • node.replaceChild(newNode)

7.jQuery的节点clone(包含事件委派的知识点)

jQuery的事件委派:

参考 https://www.cnblogs.com/pyspark/articles/8127271.html

把原来加在子元素身上的事件绑定给父元素,就是把事件委派给父元素。

语法:

on(events,[selector],[data],fn)

  • events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。
  • selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。
  • data:当一个事件被触发时要传递event.data给事件处理函数。
  • fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。

jQuery的节点clone:效果就是点加号就添加一组输入框,点减号就减去一组。代码如下,可以先看看效果,(这里用到了事件委派)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery</title>
    <!-- 远程访问 -->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>



</head>
<body>

<div class="outer">
    <div class="item">
        <input type="button" value="+" class="add">
        <input type="text">
    </div>

</div>



<script>

    $(".add").click(function (){
        var $clone = $(this).parent().clone();
        $clone.children(".add").attr({"value":"-","class":"rem"});
        $(".outer").append($clone);
    });

    $(".rem").click(function (){
        $(this).parent().remove();
    })

    // 事件委派
    $(".outer").on("click",".item .rem",function (){
        $(this).parent().remove();
    })
    
</script>



</body>
</html>

8.jQuery的CSS尺寸

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery</title>
    <!-- 远程访问 -->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <style>
        *{
            margin: 0;
        }
        .c1{
            width: 200px;
            height: 200px;
            border: 10px solid red;
            padding: 50px;
            margin: 50px;
        }
    </style>

</head>


<body>
<div class="c1">

</div>

<script>
    // 获取内容的宽高
    console.log($(".c1").width()); //200
    console.log($(".c1").height());
    // 获取整个内边距的宽高
    console.log($(".c1").innerWidth()); //300
    console.log($(".c1").innerHeight());
    // 算上外边距的宽高
    console.log($(".c1").outerWidth(true)); // 420
    console.log($(".c1").outerHeight()); // 不加true就不算哦,320
    

</script>

</body>
</html>

9.jQuery的CSS位置操作

$("").offset([coordinates]); // 获取匹配元素在当前窗口的相对偏移,有一个参数哈,就是当前窗口
$("").position(); // 获取匹配元素相对父元素的偏移,position()函数无法用于设置操作
$("").scrollTop([val]); // 获取匹配元素相对滚动条顶部的偏移

写两个案例,案例1 返回顶部案例,案例2 位置偏移

案例1代码:

 

案例2代码:

 

四、jQuery的each循环(补充知识点)

$.each() 遍历循环  类调用each方法

$().each() 遍历循环    实例对象调用each方法

类调用each():

    // 遍历循环
    var arr = [111,222,333];
    $.each(arr,function (i,j){
        //循环体
        console.log(i,j);  // 如果参数只有一个就是索引,有两个就是(索引,值)
        /* 输出是
        * 0 111
        * 1 222
        * 2 333
        * */
    })

    var obj = {name:"bj",age:23};
    $.each(obj,function (k,v){
        console.log(k,v);
    })

实例对象调用each():

<ul>
    <li>23</li>
    <li>45</li>
    <li>78</li>
    <li>15</li>
</ul>

<script>
    // 实现文本大于30的li变红
    $("ul li").each(function (){
        // 循环中的this指代每次循环中的dom对象
        var value = $(this).html();
        if(parseInt(value)>30){
            $(this).css("color","red");
        }
    })


</script>

五、jQuery动画

基本:
show([s],[e],[fn]) //显示元素
hide([s],[e],[fn]) //隐藏元素

滑动:
slideDown([s],[e],[fn]) //向下滑动
slideUp([s],[e],[fn]) //向上滑动

淡入淡出:
fadeIn([s],[e],[fn]) //淡入
fadeOut([s],[e],[fn]) // 淡出
fadeTo([s,opacity,[e],[fn]]) //让元素的透明度调整到指定值

自定义:
animate(p,[s],[e],[fn]) //自定义动画
stop([c],[j]) // 暂停上一个动画效果,开始当前触发的动画效果

 

 

六、扩展方法(插件机制)

jQuery.extend(object):扩展jQuery对象本身,用来在jQuery命名空间上增加新函数。

jQuery.fn.extend(object):扩展jQuery元素集来提供新的方法(通常用来制作插件)。

 

posted on 2024-05-14 09:37  szdbjooo  阅读(3)  评论(0编辑  收藏  举报