JavaScript 网页编程(四)——JQuery 快速开发

一.JQuery 简介

1.JQuery 概述

  • JavaScript库:一个 对 原生JS代码 进行封装 的 JS 文件,快速高效的使用封装好的功能
  • 常见的 JavaScript库 :JQuery 、Prototype 、YUI 、Dojo 、Ext JS 、移动端的 zepto
  • JQuery:封装了 JavaScript 常用的功能代码,优化 DOM 操作、事件处理、动画设计 和 Ajax 交互
  • J:JavaScript; Query:查询JS
  • 优点:轻量级、速度快、兼容主流浏览器、链式编程、隐式迭代、简化 DOM 操作、支持各种插件
  • 版本介绍:
  1. 1x :兼容 IE 678 等低版本浏览器, 官网不再更新
  2. 2x :不兼容 IE 678 等低版本浏览器, 官网不再更新
  3. 3x :不兼容 IE 678 等低版本浏览器, 是官方主要更新维护的版本

2.JQuery 的基本使用

2.1 JQuery 入口函数:$(function(){ ... });

  • 相当于原生 JS 中的 DOMContentLoaded:不必等 外部的 js 文件、css文件、图片加载完毕 就执行内部代码
  • ① $(function(){ ... });(推荐!!)        ②$(document.ready(function(){ ... }));

2.2 JQuery 的顶级对象 $

  • $ 是 JQuery 的别称,代码中可用 JQuery 代替 $
  • $ 是 JQuery 的顶级对象, 相当于 原生JS 中的 window
  • DOM 对象:用 原生JS 获取的对象,DOM 对象用 原生JS 方法
  • JQuery 对象:用 JQuery 获取的对象,只有 JQuery 对象才能用 JQuery 方法
  • JQuery 对象本质: 伪数组形式存储, 利用 $ 对 DOM对象 包装后产生的对象
// 1. DOM 对象:  用原生js获取的对象就是DOM对象
        var myDiv = document.querySelector('div'); // myDiv 是DOM对象
// 2. jQuery对象: 用jquery方式获取的对象是jQuery对象。 本质:通过$把DOM元素进行了包装
        $('div'); // $('div')是一个jQuery 对象
  • DOM 对象 与 JQuery 对象 可以相互转换
  • DOM 对象 转换为 JQuery 对象: $('DOM对象'),如:$('div')
  • JQuery 对象 转换为 DOM 对象(两种方式)
  1. $('div')[index]
  2. $('div').get(index)
        // ...
        $('video')[0].play()    // jquery里面没有play 这个方法,需要转换为 DOM 元素
        $('video').get(0).play()

二.JQuery 常用 API

1.JQuery 选择器

  • 原生 JS 获取元素,方式多,且容性不一致,因此 JQuery 做了封装,使 获取元素 统一标准

1.1 选择器、筛选方法

  • JQuery 选择器: $(“CSS选择器”) :一定要加 "引号"!
  1. 基础选择器:JavaScript 网页编程(四)——JQuery 快速开发_第1张图片
  2. 层级选择器:JavaScript 网页编程(四)——JQuery 快速开发_第2张图片
  3. 筛选选择器:JavaScript 网页编程(四)——JQuery 快速开发_第3张图片
// 新浪下拉菜单 ul>4li li>ul>3li>a       
 $(function() {
            $(".nav>li").mousenter(function() {    // 给nav 亲儿子li 添加鼠标经过事件
                $(this).children("ul").show();    // this 不要加引号 表示选取 li的亲儿子ul
            });
            $(".nav>li").mouseout(function() {
                $(this).children("ul").hide();
            })                                    })
  • JQuery 筛选方法(重点):parent() children() find() siblings() eq()
  • JavaScript 网页编程(四)——JQuery 快速开发_第4张图片

1.2 隐式迭代、排他思想、链式编程

  • 隐式迭代:遍历内部 DOM 元素(伪数组形式存储)的过程
  • JQuery 排他思想:多选一效果,当前元素设置样式,兄弟元素清除样式
  • 链式编程(以排他思想为例):$(this).css('color', 'red').sibling().css('color', '');
        $(function() {
            $("button").click(function() {    // 1. 隐式迭代 给所有的按钮都绑定了点击事件       
                $(this).css("background", "pink");    // 2. 当前的元素变化背景颜色   
                $(this).siblings("button").css("background", "");    // 3. 其余兄弟去掉背景颜色 隐式迭代
            });        
        })

1.3 淘宝精品案例分析

  1. 核心原理:鼠标经过 左侧盒子 某个 li,就让 内容区盒子 相对应图片 显示,其余图片隐藏
  2. 需要当前 li 的索引号,JQuery 得到当前元素索引号: $(this).index()
  3. 对应的图片盒子,可用 eq(index) 方法选择
   

    
  • 女靴
  • // 此处是不同的导航栏按钮 // ...
// 此处是不同的图片内容盒子
// ...

2.JQuery 样式操作

2.1 操作 css 方法

  • 返回属性值:"属性名"
  • 设置一组样式:“属性名”,“属性值”,逗号分隔,值 如果是 数字 可不跟 单位引号
  • 设置多组样式:{"属性名":"属性值","属性名":"属性值"},参数是对象,属性可不加引号
            $("div").css("width", 300);    // 可以不写单位 那就不要加引号
            $("div").css(height, "300px");    // 这个写法不对 因为属性名一定要加引号
            $("div").css({
                width: 400,
                height: 400,
                backgroundColor: "red"    // 复合属性须采取 驼峰命名法,值不是数字,则加引号
            })

2.2 设置类样式方法

  • 操作类样式:作用 =  classList,注意 操作类 里面的参数 不要加点!
  • 添加类:$(“div”).addClass(''current'');
  • 移除类:$(“div”).removeClass(''current'');
  • 切换类: $(“div”).toggleClass(''current'');
  • 类操作 VS className:原生 JS 中 className 覆盖原类名;JQuery 类操作 不影响原类名效果
            $("div").click(function() {
                $(this).toggleClass("current");    // 这里的参数类不要加点
            });

2.3 tab 栏切换分析

  1. 点击上部 li,当前 li 添加 current类,兄弟移除 current类
  2. 点击的同时,得到当前 li 的索引号
  3. 让下部相应索引号的 item 显示,其余 item 隐藏
    
// 导航栏
  • 商品介绍
  • // 被选中后 改变背景颜色 //
  • ...
// 导航栏具体内容
商品介绍模块内容
//
...
// ... $(function() { $(".tab_list li").click(function() { // 点击导航栏li 触发事件 // 当前被点击的li 添加被选中的类样式 他的兄弟 移除被选中的类样式 $(this).addClass("current").siblings().removeClass("current"); var index = $(this).index(); // 获得被点击 li 的索引号 // 让相应索引号的 导航栏具体内容 显示,其余m隐藏 $(".tab_con .item").eq(index).show().siblings().hide(); }); })

3.JQuery 效果

  • JavaScript 网页编程(四)——JQuery 快速开发_第5张图片

3.1 显示隐藏效果

  • show([speed,[easing],[fn]]) 显示
  • hide([speed,[easing],[fn]]) 隐藏
  • toggle([speed,[easing],[fn]]) 切换
  1. 参数都可省略,平时一般不带参数,直接显示隐藏
  2. speed:速度(“slow”,“normal”, or “fast”) 或 毫秒数
  3. easing:指切换效果,默认是“swing”,可用参数“linear”
  4. fn: 回调函数,动画完成时执行的函数,每个元素执行一次

 

            $("button").eq(1).click(function() {
                $("div").hide(1000, function() {
                    alert(1);
                });
            })
            $("button").eq(2).click(function() {
                    $("div").toggle(1000);    // 切换效果 一般不加参数 直接显示隐藏
                })

3.2 滑动效果

  • slideDown([speed,[easing],[fn]]) 下滑效果
  • slideUp([speed,[easing],[fn]]) 上滑效果
  • slideToggle([speed,[easing],[fn]]) 滑动切换
            $("button").eq(2).click(function() {          
                $("div").slideToggle(500);
            });

3.3 事件切换

  • hover([over,]out)
  1. over:鼠标移到元素上触发的函数(相当于mouseenter)
  2. out:鼠标移出元素要触发的函数(相当于mouseleave)
  3. 只写一个函数,则 鼠标 经过和离开 都会触发
            // 事件切换 hover 鼠标经过和离开的复合写法
            // $(".nav>li").hover(function() {    // 鼠标经过的函数
            //     $(this).children("ul").slideDown(200);    // 向下滑出
            // }, function() {    // 鼠标离开的函数
            //     $(this).children("ul").slideUp(200);    // 向上滑动
            // });
            // 事件切换 hover  只写一个函数,那么鼠标经过和离开都会触发这个函数
            $(".nav>li").hover(function() {
                $(this).children("ul").stop().slideToggle();    // 滑动切换
            });

3.4 动画队列 / 停止排队

  • 动画队列:多次触发 造成 多个动画排队执行

  • stop() 停止排队:写到动画的 前面,立刻开始当前操作,忽略之前操作

3.5 淡入淡出效果

  • fadeIn([speed,[easing],[fn]]) 淡入效果
  • fadeOut([speed,[easing],[fn]]) 淡出效果
  • fadeToggle([speed,[easing],[fn]]) 淡入淡出切换效果
  • fadeTo([[speed],opacity,[easing],[fn]]) 渐进调整到 指定的不透明度
  • 渐进调整到 指定的不透明度的参数 opacity(0-1) 透明度、speed 必须写
  • 高亮显示分析:JavaScript 网页编程(四)——JQuery 快速开发_第6张图片
            $(".wrap li").hover(function() {   //鼠标经过时,其他li 透明度:0.5
                $(this).siblings().stop().fadeTo(400, 0.5);
            }, function() {   // 鼠标离开,其他li 透明度改为 1     
                $(this).siblings().stop().fadeTo(400, 1);
            })

3.6 自定义动画 animate

  • animate(params,[speed],[easing],[fn]) 
  1. params:想要更改的样式属性,以 对象形式 传递,必写其余参数可省略
  2. speed:速度(“slow”,“normal”, or “fast”) 或 毫秒数
  3. easing:指切换效果,默认是“swing”,可用参数“linear”
  4. fn: 回调函数,动画完成时执行的函数,每个元素执行一次
            $("button").click(function() {
                $("div").animate({    // 想要更改的样式属性 用对象存储 必写
                    left: 500,
                    top: 300,
                    opacity: .4,
                    width: 500
                }, 500);    // 速度
            }))

3.7 王者手风琴效果分析

  • 鼠标经过某个 li 有两步操作:
  1. 当前小 li 宽度变为 224px,同时里面的小图片淡出,大图片淡入
  2. 兄弟小 li 宽度变为 69px,小图片淡入, 大图片淡出

    
  • // ...

JavaScript 网页编程(四)——JQuery 快速开发_第7张图片

4.JQuery 属性操作

4.1 元素固有属性值 prop()

            $("a").prop("title", "特特喜欢茶茶");    // 修改元素固有属性
            $("input").change(function() {    // input框 内容改变事件
                console.log($(this).prop("checked"));    // 获取元素固有属性(获取选中状态)
            });

4.2 元素自定义属性值 attr()

  • 元素自定义属性:用户自己添加的属性,比如给 div 添加 index =“1”
  • 获取属性:attr(''属性''),类似原生 getAttribute(),如果获取 H5自定义属性 需要添加 data-
  • 设置属性:attr(''属性'', ''属性值''),类似原生 setAttribute()
$("div").attr("index", 4);    // 设置自定义属性的值
console.log($("div").attr("data-index"));    // 获取自定义属性的值 如果获取 H5自定义属性 需要添加 data-

4.3 数据缓存 data()

  • data() :在指定元素上存取数据,不会修改 DOM 元素结构,一旦页面刷新,之前的数据将被移除
  • data("index") 可以读取 HTML5 自定义属性 data-index 可以不加"data-",且得到的是 数字型
  • 获取数据:date(''name'')
  • 附加数据:data(''name'',''value'') 
            $("span").data("uname", "meow");    // 设置数据缓存 刷新后消失
            console.log($("span").data("uname"));    // 读取数据缓存 

5.JQuery 文本属性值

5.1 针对 元素的内容 / 表单的值 操作 

  • 普通元素内容 html()( 相当于原生 innerHTML)
  • 普通元素文本内容 text() (相当于原生 innerText)
  • 表单的值 val()( 相当于原生 value)

6.JQuery 元素操作

  • 遍历、创建、添加、删除元素操作

6.1 遍历元素

  • 隐式迭代是对 相同元素 做 相同操作,想要给 相同元素 做 不同操作,需要 遍历
  • $("div").each(function (index, domEle) {...})
  • each() 方法用于遍历元素,用 DOM 处理
  • 回调函数有 2 个参数: index 是元素索引号; demEle 是 DOM元素对象,不是 JQuery对象,只能用 DOM 方法
  • 要想使用 JQuery方法,需要转换为 JQuery对象: $(domEle)
    
1
2
3

6.2.3 删除元素:

  1. element.remove():删除元素本身

  2. element.empty():删除元素内容(子节点)
  3. element.html(''''):清空元素内容(子节点)
  • empt() 和 html('''') 作用等价,都可删除元素内容,只不过 html 还可以设置内容
    
  • 原先的li
原先的div

你可能感兴趣的:(前端)