飞道的博客

jQuery学习

246人阅读  评论(0)

jQuery学习

一、jQuery的概述

JS库

常见的JavaScript库:jQuery、Prototype、YUI、Dojo、Ext JS、移动端的zepto


二、jQuery的基本使用

jQuery的下载:https://jquery.com/
引入jQuery代码

jQuery的入口函数

    <script>
        //jquery的入口函数 等待dom结构渲染完毕即可执行内部代码 不必等到所有外部资源加载完成
        //相当于原生js中的DOMContentLoaded 而不是load(等待页面文档、外部js、css、图片加载完)
        //第一种
        $(document).ready(function () {
   
            $('div').hide();
        })
        //第二种(推荐)
        $(function () {
   
            $('div').hide();
        })
    </script>

jQuery顶级对象
$是jQuery的别称,代码中可以使用jQuery代替 $
$是jQuery的顶级对象,相当于原生js中的window,把元素利用 $ 包装成jQuery对象,就可以调用jQuery的方法

jQuery对象和DOM对象

  1. dom对象:使用原生js获取
  2. jQuery对象:使用jQuery方式获取,本质:通过$把dom对象进行了包装,以伪数组的形式存储
var myDiv = document.querySelector('div'); //dom对象
$('div'); //jQuery对象
  1. dom对象只能使用原生js属性和方法,jQuery对象只能使用jQuery方法
myDiv.style.display = 'none'; //使用原生方法
$('div').hide(); //使用jQuery方法
  1. jQuery对象和dom对象的相互转换

三、jQuery常用API使用

1. 选择器

$('选择器')


层级选择器 和css的写法一样

隐式迭代(重要)
遍历内部DOM元素(伪数组形式存储)的过程
也就是说,把匹配到的所有元素进行循环遍历,执行相应的方法,不用再像原生一样使用for循环

$("div").css("background", "pink"); //可以一次性修改

jQuery的筛选选择器

jQuery筛选方法(重点)

重点掌握:parent()、children()、find()、siblings()、eq()
补充:返回指定祖先元素:$(".four").parents(".one");

//选择ul中的第三个li
//法一:使用选择器的方法
$("ul li:eq(2)").css("color", "pink");
//法二:使用筛选方法(更推荐,方便传入变量)
$("ul li").eq(2).css("color", "blue");

案例:下拉菜单

    <script>
        $(function () {
   
            // 鼠标经过 对于每个li都隐式绑定了事件
            $(".nav>li").mouseover(function () {
   
                //$(this)表示当前元素
                //show()显示元素 hide()隐藏元素
                $(this).children("ul").show();
            })
            // 鼠标离开
            $(".nav>li").mouseout(function () {
   
                $(this).children("ul").hide();
            })
        })
    </script>

补充知识点:事件切换
$("div").hover(function(){}, function(){}); 前面是mouseover的回调,后面是mouseout的回调,写法更加简单
$("div").hover(function(){}); 只有一个函数时,mouseover和mouseout都是这个回调函数

案例:排他思想的应用

    <script>
        $(function () {
   
            //隐式迭代 所有的按钮都绑定了点击事件
            $("button").click(function () {
   
                //当前元素背景颜色变化
                $(this).css("background", "pink");
                //其余兄弟去掉背景颜色 (排他) 隐式迭代
                $(this).siblings("button").css("background", "");
            })
        })
    </script>

其他知识:
$(this).index();可以获得当前索引

2. 样式操作 css

    <script>
        $(function () {
   
            console.log($('div').css("width")); //200px
            $('div').css("width", "300px"); //或者$('div').css("width", 300);
            $('div').css({
    //属性名和数字属性值可以不加引号(也可以加)
                width: 300,
                height: 300,
                // 驼峰命名法
                backgroundColor: "red"
            })
        })
    </script>


链式编程操作
$(this).addClass("current").siblings().removeClass("current");
$(".tab_con .item").eq(index).show().siblings().hide();

注意:原生js的className会覆盖原来的类名,但是addClass是增加,不会影响原来的类名。

3. 效果

显示隐藏

显示:show([speed], [easing], [fn])
隐藏:hide([speed], [easing], [fn])
切换:toggle([speed], [easing], [fn])
一般情况我们都不加参数,动画效果挺丑的

滑动

下拉滑动:slideDown([speed], [easing], [fn])
上拉滑动:slideUp([speed], [easing], [fn])
切换滑动:slideToggle([speed], [easing], [fn])
一般使用也不加参数

重点:如果添加了很多动画效果可能会出现动画队列的现象,因此我们往往先停止动画stop(),再写动画效果
例如:$(this).children("ul").stop().slideToggle();

淡入淡出

淡入:fadeIn([speed], [easing], [fn])
淡出:fadeOut([speed], [easing], [fn])
淡入淡出切换:fadeToggle([speed], [easing], [fn])
修改透明度:fadeTo(speed, opacity, [easing], [fn]) speed和opacity必须写,opacity取值为0-1之间

自定义动画

语法:animate(params, [speed], [easing], [fn])
params:想要修改的样式属性,以对象的形式传递,必须写,属性名可以不用带引号,复合属性采用驼峰命名法

例子:

    <script>
        $(function () {
   
            $("button").click(function () {
   
                $("div").animate({
   
                    left: 500,
                    top: 300,
                    opacity: .4,
                    width: 500
                }, 500);
            })
        })
    </script>

4. 属性操作

获取元素固有属性:$("div").prop("属性")
修改固有属性:$("div").prop("属性", "属性值")
获取元素自定义属性:$("div").attr("属性")
修改元素自定义属性:$("div").attr("属性", "属性值")

数据缓存data() 数据存放在元素的内存里面,不显示在dom中
设置:$("span").data("uname", "vivian");
获取:$("span").data("uname");

获取自定义属性的方法:

<span index=1 data-index=1></span>

index是自定义属性,data-index是H5自定义属性
可以通过$("span").attr("index")获取index属性
可以通过$("span").attr("data-index")(返回字符串1)、$("span").data("index")(返回数字1)获取data-index属性

其他知识点:
change事件,当表单状态发生变化时触发:$("input").change(function(){});
:checked 获得当前复选框被选中的:$("input:checked").length 输出个数

5. 文本属性值

获取元素内容:$("div").html();
修改元素内容:$("div").html("123");
获取元素文本内容:$("div").text();
修改元素文本内容:$("div").text("123");
获取表单值:$("input").val();
修改表单值:$("input").val("123");

6. 元素操作

隐式迭代是对同一类元素做了同样的操作,如果想给同一类元素做不同操作,就要用到遍历
隐式迭代:$("div").css("color", "red");

(1)遍历

语法一:$("div").each(function(index, domEle){}); 更适合用来遍历元素

$("div").each(function(index, domEle) {
   
	//index 为当前元素的索引
	//domEle是当前dom对象,要使用jquery方法 必须先转成jquery对象
	$(domEle).css("color", arr[index]); //给不同的div赋值不同的颜色
})

语法二:$.each(object, function(index, element){}); 更适合用来遍历数组、对象

$.each(arr, function(index, element){
   
	
})
(2)创建

var li = $("<li>新创建的li</li>");

(3)添加

$("ul").append(li); 在元素的内部添加,放到最后,父子关系
$("ul").prepend(li); 在元素的内部添加,放到最前,父子关系
$("ul").after(li); 在元素的外部添加,放到后面,兄弟关系
$("ul").before(li); 在元素的外部添加,放到前面,兄弟关系

(4)删除

$("ul").remove(); 移除自己
$("ul").empty(); 移除所有子节点
$("ul").html(""); 移除所有子节点

四、jQuery事件

1. jQuery事件注册

$("div").click(function(){});
还有事件:mouseover、mouseout、blur、focus、change、keydown、keyup、resize、scroll

2. jQuery事件处理on/off

可以处理多个事件

$("div").on({
   
	click: function() {
   
		$(this).css("background", "purple");
	},
	mouseover: function() {
   
		$(this).css("background", "red");
	}
})

也可以这样写

$("div").on("mouseover click", function() {
    //多个事件添加同一个动作
	$(this).toggleClass("current");
})

on可以实现事件委托
on还可以实现动态绑定未来创建的元素 动态是指原来html结构中没有的元素

//click绑定在ul身上, 触发的对象是ul里面的li
$("ul").on("click", "li", function(){
   });

off解绑事件
$("div").off() 解绑div身上所有事件
$("div").off("click") 解绑click事件
$("ul").off("click", "li") 解绑事件委托

one() 只触发一次事件
$("div").one("click", function(){})

自动触发事件
法一:$("div").click();
法二:$("div").trigger("click");
法三:$("div").triggerHandler("click"); 不会触发元素的默认行为

3. jQuery事件对象

$("div").on("click", function(evetn){}); event就是事件对象,和传统的事件对象类似
阻止默认行为:event.preventDefault() 或者 return false
阻止冒泡:event.stopPropagation()

五、jQuery其他方法

1. jQuery拷贝对象extend


深拷贝时,原来复杂类型的数据如果不冲突的话,是合并,不是覆盖

2. 多库共存

3. jquery插件



bootstrap JS插件:
bootstrap框架也是依赖于jquery开发的,因此里面的js插件使用,也必须引入jQuery文件

六、jQuery尺寸、位置操作

1. jQuery尺寸

    <style>
        div {
   
            width: 200px;
            height: 200px;
            background-color: pink;
            padding: 10px;
            border: 15px solid red;
            margin: 20px;
        }
    </style>
    <script>
        $(function () {
   
            //1. width() / height()
            console.log($("div").width()); //200
            // $("div").width(300); 修改

            //2. innerWidth() / innerHeight()
            console.log($("div").innerWidth()); //220

            //3. outerWidth() / outerHeight()
            console.log($("div").outerWidth()); //250

            //4. outerWidth(true) / outerHeight(true)
            console.log($("div").outerWidth(true)); //290

        })
    </script>

2. jQuery位置




转载:https://blog.csdn.net/qq_43819274/article/details/115693443
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场