细说JQuery入门学习

JQuery 笔记

1.JQuery基础

(1) jQuery是什么?

jQuery是 JavaScript 的类库

(2)Jquery特点

写得少 干得多

(3)jQuery优势

  • 开源
  • 便捷的的选择器
  • 方便的dom操作
  • 丰富的动画操作
  • 简单的ajax操作
  • 兼容性
  • 方便的插件机制

(4)jQuery缺点

​ 额外的 添加 jQuery文件,增加网络传输量

(5)jQuery版本

​ jQuery 1.X 支持IE
​ jQuery 2.X IE9+ 其他…
​ jQuery 3.X IE9+ 支持最新的浏览器

2.jQuery的基本语法

https://www.jquery.com/ [官网.手册]
http://www.jq22.com/chm/jquery/index.html

(1)jquery标准的使用方法

  • 原生事件

    • window.onload = function() {
          $('h1').css('color', '#f00');
      }
      
  • JQ 标准入口

    • $(document).ready(function(){
          $('h1').css('color', '#f90');
          demo();
      });
      
  • JQ 简写入口

    • $(function(){
          $('h1').css('font-size', '100px');
      });
      

(2)ready和onload的区别

  • 触发点:
    • ready 文档中的dom加载完就触发
    • onload 文档中一切都加载完 才触发
  • 绑定逻辑:
    • ready 可以绑定多次或多个事件 (事件监听)
    • onload 后面的绑定会覆盖前面的代码

(3)链式操作风格

JQuery 的对象默认都返回 this

//例
$('h1').css('color', '#f00').css('font-size', '100px');

(4)jQueryDOM 与 JSDOM 的区别 以及相互转化

  • 区别
    • JQDOM 通过 $( )获取到一个 数组对象
    • JSDOM 通过 getElementByID( ) 获取到一个 元素对象
  • 转化
    • JSDOM 转为 JQDOM 通过 $( JSDOM )
    • JQDOM 转为 JSDOM 通过 JQDOM[index] 或 JQDOM.get(index)

(5) jquery 命名冲突

$ 是jQuery的别名

var $ = '静静';
console.log($);
// $('h1').css('color','#f00'); // NO
jQuery('h1').css('color','#f00');

3.jQuery的选择器

(1) 基本选择器

基本选择器
*通配符选择器
#idID选择器
.classCLASS选择器
TagName标签选择器
s1,s2,s3组合选择器/分组选择器

(2) 层级选择器

层级选择器
selector selector后代选择器
selector > selector所有的字元素
selector + selector紧邻着的下一个同辈元素
selector ~ selector紧邻着的所有同辈元素

(3) 过滤选择器

过滤选择器
:first首个
:last最后一个
:eq(index)指定第几个
:lt(index)索引小于—index以上的要 , 以下的不要
:lt(index)索引大于—index以下的要, 以上的不要
:odd索引为单数
:even索引为偶数
:header所有的h标签
:not(selector)排除指定选择器所选的元素
:root根元素 html

(4) 内容选择器

内容选择器
:contains( text )匹配包含有指定文本的元素
:has(selector)匹配含有 选择器所匹配的元素的 元素, ( 匹配包含该元素的父级 )
:parent匹配含有子元素或子节点的元素
:empty匹配不含有子节点的元素(空元素)

(5) 可见性选择器

可见性选择器
:hidden匹配所有不可见元素
:visible匹配所有课件元素

(6) 属性选择器

属性选择器
selector [attrname]选择有指定属性的元素
selector [attrname = 'value']指定值等于value的元素
selector [attrname != 'value']指定值不等于value的元素
selector [attrname ^= 'value']指定值以value开头的元素
selector [attrname $= 'value']指定值以value结尾的元素
selector [attrname *= 'value']指定值包含value的元素
[ ][ ][ ]....多个属性选择器,做进一步筛选

(7) 子元素选择器

子元素选择器
:first-child匹配首个子元素
:last-child匹配最后一个子元素
:only-child匹配唯一的子元素
:nth-child( n )匹配父元素的第N个子元素

(8) 表单选择器

选择所有的表单控件

:input
:text
:password
:radio
:checkbox
:submit
:image
:reset
:button
:file

(9) 表单对象选择

表单对象选择器
:enabled匹配所有的可用的表单元素
:disabled匹配所有被禁用的表单元素
:checked匹配所有被选中的表单元素
:selected匹配所有被选中的option表单元素

4.jQuery的筛选

(1)过滤

过滤
eq(index)过滤出指定的某个
first( )过滤出
last( )过滤出最后一个
filter( selector )从前面的集合中过滤出满足后面条件的那个
not(selector)过滤排除,从匹配的元素合集中移除指定的元素
slice( start, end )截取出指定的一段
has(selector)过滤出含有指定选择器所选择的元素的元素 (指定选择的元素的父级)
hasClass( )判断前面的集合中是否含有包含指定的某个类
is( selector )判断前面的集合中是否有元素指定的 表达式(选择器)
map()类似于对JQ进行遍历操作,并取出一部分值

(2)查找

具有破坏性,得到对象 可能不是前面集合的子集

往里找
children( )找子元素
find( )找后代元素
往外找
parent( )找父级
parents( )找父级们 找先辈
parentsUntil( )找父级们 , 到指定的位置为止
offsetParent( )找父级们 一直匹配到已定位的父级为止
closest( )逐级向上查找,返回找到的父级 ( 有 返回值 )
往后找
next( )紧邻着的后面的一个同辈元素
nextAll( )紧邻着的后面的所有的同辈元素
nextUntil( )紧邻着的后面的同辈元素,直到某个指定位置为止
往前找
prev( )紧邻着的前面的一个同辈元素
prevAll( )紧邻着的前面的所有的同辈元素
prevUntil( )紧邻着的前面的同辈元素, 直到某个指定位置为止
找其他
siblings( )除了元素自己以外的其他同辈元素

(3) 串联

串联
add( )向集合内追加新元素
andSelf( ) / addBack( )把之前选中的集合加入到当前集合内
end( )返回最后一次破坏性操作之前的状态
contents()获取所有的子节点(包括文本)

5.文档处理

内部插入
append()内部最后
appendTo()
要插入的父级.prepend( 要插入的内容)内部最前
要插入的内容.prependTo(‘要插入的父级’)
外部插入
after()外部最后
insertAfter()
before()外部最前
insertBefore()
包裹
wrap()将集合内的每个元素都包裹在指定元素内
wrapAll()将整个集合的元素都包裹在指定元素内
unwrap去掉包裹
wraplnner()将选中的元素里面的内容包裹在一个标签内
替换
replaceWith()替换 谁
replaceAll()谁 被替换
删除
remove()删除元素
empty()清空子节点
复制
clone()复制

6.属性

(1)属性操作

属性操作
attr()读 / 写 属性
removerAttr()移除属性
prop()读 / 写 属性
removeProp()移除属性

(2)CSS类

CSS类
addClass()添加一个属性
removeClass()移除一个类属性
toggleClass()添加移除,来回切换

(3)HTML 代码 / 文本 / 值

HTML 代码 / 文本 / 值
html()等同于 innerHTML
text()等同于innerText
val().value(表单控件)

7.CSS操作

(1) css

$('div').css('color', '#f00').css(.....);
多个样式,可用JSON作为参数传递多个样式
    $('div').css({
        "color":"#f00",
        "font-size":"100px",
    });

(2) 位置

位置
offset()获取/设置 元素相对于整个文档的位置,left/top属性
position()获取 已定位的父元素的位置
scrollTop()获取 / 设置 滚动条距离上边的位置
scrollLeft()获取 / 设置 滚动条距离上边的位置

( 3 ) 尺寸

width()  获取/设置  CSS设置的元素宽
height() 获取/设置  CSS设置的元素高
(不加边框)
innerWidth()  获取/设置  内容+内边距的宽
innerHeight() 获取/设置  内容+内边距的高
(标准元素大小: 内容+内边距+边框)
outerWidth()  获取/设置  实际的宽
outerHeight() 获取/设置  实际的高
$(window).height() //浏览器时下窗口可视区域高度
$(document).height() //浏览器时下窗口文档的高度
$(document.body).height()//浏览器时下窗口文档body的高度
$(document.body).outerHeight(true)//浏览器时下窗口文档body的总高度 包括border padding margin
$(window).width() //浏览器时下窗口可视区域宽度
$(document).width()//浏览器时下窗口文档对于象宽度
$(document.body).width()//浏览器时下窗口文档body的高度
$(document.body).outerWidth(true)//浏览器时下窗口文档body的总宽度 包括border padding margin
$(document).scrollTop() //获取滚动条到顶部的垂直高度
$(document).scrollLeft() //获取滚动条到左边的垂直宽度

8.事件

1.绑定事件 / 事件委派

  • 简写方式 JQDOM.event(function(){.......});
$('#list li').click(function(){
    //JQ代码   $('')....;
});
  • JQ 标准事件方式 bind() / on() [支持 事件委派]
    • bind( ) 可多个事件绑定, 不支持事件委派
      • 传入两个参数方式: JQDOM.bind('event',function(){.......});
      • 采用json字符串方式:JQDOM.bind({'event':function(){事件1},'event':function(){事件2},'event':function(){事件3},});
    • on( ) 可多个事件绑定, 支持事件委派
      • 传入两个参数方式: JQDOM.on('event',function(){.......});
      • 采用json字符串方式:JQDOM.on({'event':function(){事件1},'event':function(){事件2},'event':function(){事件3},});
// bind() 绑定事件 (可多个, 可不支持委派)
$('#list li').bind('click',function(){
    //....单个事件
});
$('#;list li').bind({
    'mouseover':function(){
        //...鼠标事件1
    },
    'mouseout':function(){
        //...鼠标事件2
    },
});

// on() 绑定事件 (可多个, 支持事件委派)
$('#list li').on('click',function(){
    //....单个事件
});
$('#;list li').on({
    'mouseover':function(){
        //...鼠标事件1
    },
    'mouseout':function(){
        //...鼠标事件2
    },
});
  • one( ) 一次性事件
    • JQDOM.one('event',function(){ ... });
// one() 一次性 事件
$('h1').one('click',function(){
    alert('你是个好人,再见!');
});

2.解绑事件

  • unbind( ) 解绑bind()事件

    • JQDOM.unbind(); 解绑该元素的所有bind()事件
    • JQDOM.unbind('event'); 解绑该元素 指定的bind(‘event’)事件
  • off( ) 解绑on() 事件(支持事件委派)

    • JQDOM.off(); 解绑该元素的所有 非委派事件
    • JQDOM.off('event'); 解绑该元素的 指定 非委派事件
    • $(document).off('指定的事件event','指定的元素'); 解绑指定元素的 指定的 委派事件

3.自动触发事件

  • trigger( ) 事件自动触发
    • JDDOM.trigger('event');

4.阻止默认事件 / 事件冒泡

  • 阻止默认事件
    • 在事件方法体内使用 return false
    • 使事件不冒泡 return false

9.动画效果

JDMON.动画效果();

基本参数
show( )显示
hide( )隐藏 ( 修改宽高透明度)slow-normal-fast- 或者直接写多少毫秒 3000=3秒
toggle( )切换 显示/隐藏
滑动效果滑动也可以做隐藏
slideDown( )下滑动
slideUp( )上滑动
slideToggle( )切换 上/下 滑动
淡入淡出淡出也可以做隐藏
fadeIn( )淡入
fadeOut( )淡出
fadeToggle( )切换 淡入/淡出
fadeTo( )指定透明度0: 透明,1:不透明参1: 指定时间 参2: 指定透明度
自定义动画
animate( JSON,time )自定义参1:json字符串 要改变的属性和值,参数2: 改变的秒数
stop( )停止
delay( )延迟
// 自定义动画指定透明度
$('点击哪个按钮').click(function(){
   $('改变哪个图片').animate({
       //'width':'0px',     // 动画变为0宽度
       //'width':'toggle',  // 可以切换
       'width':'1200px',
       'height':'600px'
   },1000);//参1:json字符串 要改变的属性和值,参数2: 改变的秒数
});

新闻轮播效果

setInterval(function(){
    $('.media-list li') //要追加的内容
    .last().fadeTo(0,0).hide()//最后一个先改变透明度0,0秒,隐藏
    .prependTo('.media-list').slideDown(1000).fadeTo(1000,1);//追加到父级的内部的最前面,在下拉,淡入出来 花1秒
},3000);// 定时器 每3秒执行一次

10.事件状态的轮巡切换

toggle() 在JQ3.0之前的版本

例: 相当于一个点击事件, 点第一下输出1 点第二下输出2

$('#box').toggle(function(){
    console.log(1);
},function(){
    console.log(2);
},function(){
    console.log(3);
},function(){
    console.log(4);
});

11.AJAX

1.ajax请求 加载

  • JQDOM.load() 对象是JQDOM

    • $('#box').load('./php/1.php');
      
  • get请求方式:$.get( 参1:请求地址,参2{json字符串需要传递的参数}, 参3:接受来的数据做什么fun , 参4:'json' 做json处理 转为对象 );

  • $.get('./php/1.php',{a:num1,b:num2,串行化的数据}, function(data){
       $('#box').append(data);
    },'json');//将接受data数据 json处理 转为对象了
    
  • post请求方式:$.post( ) 使用方式同上

  • 店长推荐: $.ajax( )

    • $.ajsx({
          type:'get',
          url:'./php/1.php',
          data: 串行化的数据,
          dataType:'json';  // 将传递过来的数据做json处理
          async:false; // 同步请求 / 异步请求
          success:function(data){
              $('#box').append(data+'<br>');
          },
          error:function(){
              alert('发送请求失败');
          },
      })
      

2.获取表单中的数据

JQDOM.serialize(); 会将JQDOM中所有的name和值 拼成参数的样子 a=3&b=4…

这样就可以直接填写到

​ $.get() 的参数2中

​ $.ajax({

​ data: 串行化数据; 看上面

​ })

12.JQuery 其他方法

1.JSONP方式加载文件 实现跨域

$.getScript('http://127.0.0.1/..../1.php');

//php文件中内容

require './config.php';
require './DB.class.php';
$db = DB::table('user');
$data = $db->find(10);

echo "makedata(".json_encode($data).")";
// html script中的内容
function makedata(obj){
    $('#box').html('');
    for(var i in obj){
        box.innerHTML += i + ':' + obj[i] + '<br>';
    }
}   // 获取返回的数据 遍历到div中

2.each() 遍历

index( )当前元素的 索引值

get( ) 获某个索引的 元素

size( ) 获取JQDOM的 长度 ( 目前有问题使用**.length **代替)

$('#list li').each(function(i,n){
    console.log(i,n);  // 会遍历出索引号 和 代表的对象每个li
    console.log(this,$(this).index()); //同上 JQ方法
});

13.案例- 四级地址联动

请选择您的地址: 
    <select id="pro"></select>
    <select id="city"></select>
    <select id="area"></select>
    <select id="street"></select>
<script src="./jquery-3.3.1.min.js"></script>
<script>
    // 加载省份数据
    $.ajax({
        type:'get',
        url: './php/address.php',
        dataType: 'json',
        // 同步请求 第一级数据
        async: false, 
        success: function(data){
            // 将省份信息 写入首个select
            // 先清空
            $('#pro').empty();
            // 遍历省份数据
            for (var i = 0; i < data.length; i++) {
                $('<option value="'+data[i].id+'">'+data[i].name+'</option>').appendTo('#pro');
            }
        },
        error: function(){
            alert('AJAX执行失败了!');
        }
    });


    // 绑定 change 事件
    $('#pro,#city,#area').change(function(){
        // 先清空
        $(this).nextAll('select').show().empty();
        // 获取当前的value值
        var upid = $(this).val();
        // 保留触发事件的下拉框对象
        var _this = $(this);

        // 请求下一级数据
        $.ajax({
            type: 'get',
            url: './php/address.php',
            data: 'upid='+upid,
            dataType: 'json',
            success: function (data){
                // 如果下一级数据为false,则隐藏之后的下拉
                if (!data) {
                    _this.nextAll('select').hide();
                    return;
                }

                // 遍历下一级数据
                for (var i = 0; i < data.length; i++) {
                    $('<option value="'+data[i].id+'">'+data[i].name+'</option>').appendTo(_this.next('select'));
                }

                // 自动触发 后面的select的请求和填充
                _this.next('select').trigger('change');

            },
            error: function (){
                alert('AJAX执行失败了!');
            }
        });
    });

    // 省份的自动触发加载事件
    $('#pro').trigger('change');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值