jQuery总结

写的少,做的多

1.为什么要使用jquery?

在javascript开发过程中,有很多很多缺点:
1:代码冗余.
2:有兼容性问题
3:遍历数组很麻烦,通常要嵌套一大推的for循环
4:查找元素的方法单一,麻烦
5:想要实现简单的动画效果,麻烦的要死

2.使用了jquery

1:完全没有兼容性问题
2:代码简单,好用
3:查找元素的方法非常灵活
4:拥有隐式迭代特性,因此不再需要手写for循环了
5:实现动画功能相当简单,而且功能强大

jquery与原生js的对比

<!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>
    <script src="./jquery-1.12.4.js"></script>
    <style>
    .pink{
        background-color: pink;
    }
    </style>
</head>
<body>
    <button>按钮</button>
    <ul>
        <li>哈哈</li>
        <li>哈哈</li>
        <li>哈哈</li>
        <li>哈哈</li>
        <li>哈哈</li>
    </ul>
</body>
</html>
<script>
    //没使用前,给按钮添加点击事件
    document.querySelector('button').onclick=function(){
        var num=document.querySelectorAll('ul>li');
        //没使用前遍历
        for(var i=0;i<num.length;i++){
            num[i].style.backgroundColor='pink';//设置颜色
        }
    }
-----------------------------------------------------
    // 使用后,给按钮添加点击事件
    $('button').click(function(){
        //使用后遍历
        $('ul>li').css('backgroundColor','pink');//设置颜色
    })
</script>

3.jquery到底是什么呢?

jQuery的官网 http://jquery.com/
jQuery就是一个js库,使用jQuery的话,会比使用JavaScript更简单。

jQuery就是一个js文件,里面封装了一大推方法提供给我们使用,方便我们的开发,

4.jquery,原生js的入口函数的区别

1.jquery的入口函数有两种写法
  <script>
        //第一种写法
        $(document).ready(function(){

        });

        //第二种写法
        $(function(){

        })
        //两种写法的意思都一样,通常都是用第二种,因为更简单
    </script>
2.jquery与原生js的入口函数对比
    <script>
     //原生js入口函数
     //只能写一个,否则报错
     window.onload=function(){
        //js的入口函数要等页面中的资源(包括图片,文件)加载完之后执行
     }

     //jquery入口函数
     //可以写多个
     $(function(){
        //jquery的入口函数只会等待文档树加载完成就开始执行,并不会等待图片、文件的加载
     })

     //所以jquery的入口函数的执行时机要比原生js的要快
    </script>

5.jq对象与dom对象

1.DOM对象:使用js中方法获取页面中的元素返回的对象就是dom对象
2.jQuery对象:jq对象就是使用jquery的方法获取页面中的元素返回的对象就是jq对象
3.jq对象其实就是DOM对象的包装集包装了DOM对象的集合(伪数组)
4.DOM对象与jq对象发方法不能混用
DOM对象转换成jq对象:用$

<script>
    var $obj=$('domobj');
    //DOM对象转成jq对象
</script>

jq对象转成DOM对象:用下标取值 get()方法

<script>
   var $li = $("li");
//第一种方法(推荐使用)
$li[0]
//第二种方法
$li.get(0)
</script>

6.jquery选择器

1.jquery选择器是jquery为我们提供的一组方法,让我们更加方便的获取到页面中的元素
2.jquery选择器返回的是jquery对象
3.基本选择器和层级选择器跟css的选择器用法一毛一样
过滤选择器
:eq(index) 获取到的元素中,按索引来查找元素
:odd 获取到的元素中,选中索引为奇数的元素
:even 获取到的元素中,选中索引为偶数的元素
筛选选择器
children() 子类选择器
find() 后代选择器
siblings() 查找兄弟节点,不包括自己
parent() 查找父亲
eq(index) index从0开始
next() 找下一个兄弟
prev() 找上一个兄弟

7.元素设置

1.样式设置
<script>
    //设置样式,两个参数  设置的样式属性,具体样式
    $('li').css('color','red');

    //对象(设置的样式属性:具体样式)
    $('li').css({'color':'red'});

    //设置多个样式
    $('li').css({
        'color':'green',
        'font-size':'20px'
    })
</script>
2.类名设置
<script>
  //添加一个类
  $('li').addClass('title');

  //删除一个类
  $('li').removeClass('title');

  //切换一个类,有就删除没有就添加
  $('li').toggleClass('title');

  //匹配一个类,判断是否包含某个类  如果包含返回true否则返回false
  $('li').hasClass('title');
</script>
3.属性设置
<script>
//获取属性
$('li').attr('name');

//设置属性
$('li').attr('name','蔡徐坤');

//设置多个属性
$('li').attr({
    'name':'蔡徐坤',
    'age':'38',
    'xin':'女'
})
</script>
4.prop方法
<script>
//对于布尔类型的属性,不要attr方法,应该用prop方法,prop跟attr方法一样
//给复选框添加属性
$('#checkbox').prop('checked');

//添加属性为true,选中状态
$('#checkbox').prop('checked',true);

//添加属性为false,不选中
$('#checkbox').prop('checked',false);

//删除该属性
$('#checkbox').removeProp('checked');
</script>

8.动画

前言我说过用jquery实现动画效果,是很简单很简单的

1.基本动画
<script>
//动画的本质是改变容器的大小和透明度
//如果不传参数是看不到动画的
//可传入特殊的字符  fast  normal  slow  推荐使用数字传参 单位毫秒
//展示动画
$('div').show();//相当于display:block

//隐藏动画
$('div').hide();//相当于display:none

//切换展示和隐藏动画
$('div').toggle();
</script>
2.滑入滑出
<script>
//该动画的本质是改变容器的高度
//滑入动画
$('div').slideDown();

//滑出动画
$('div').slideUp();

//切换滑入滑出
$('div').slideToggle();
</script>
3.自定义动画
<script src="./jquery-1.12.4.js"></script>
    <style>
    div{
        width: 200px;
        height: 200px;
        background-color: pink;
        /* 一定要给元素加定位,否则动不了 */
        position:absolute;
    
        
    }
    </style>
</head>
<body>
    <button>按钮</button>
    <div></div>
<script>
$(function(){
    //参数1:需要做动画的属性
    //参数2:需要执行动画的总时长
    //参数3:执行动画的时候的速度
    //参数4:执行动画完成之后的回调函数
    $('button').click(function(){
    $('div').animate({left:800},5000,'swing',function(){
        console.log('完成')
        //在回调函数中可以在设置回调函数
        $('div').animate({top:300},2000,'linear',function(){
            alert('完成')
        })
    });
})
})
</script>
4.淡入淡出
    <script src="./jquery-1.12.4.js"></script>
    <style>
    div{
        width: 200px;
        height: 200px;
        background-color: pink;
    }
    </style>
</head>
<body>
    <button>按钮</button>
    <div></div>
<script>
    //入口函数
    $(function(){
        $('button').click(function(){
 //淡入淡出动画的本质是改变容器的透明度
        //淡入动画
        $('div').fadeIn();

        //淡出动画
        $('div').fadeOut();

        //切换淡入淡出
        $('div').fadeToggle();
        //从哪里淡入到哪里
        $('div').fadeTo('speed','opacity');
        }) 
    })
</script>

以上动画都能添加自定义,这里就不写了,嘻嘻

5.动画队列

jquery中有个动画队列的机制,当我们对一个对象添加多次动画效果时后添加的动作就会被放入整个动画队列中,等前面的动画完成后在开始执行.
可是用户的操作往往都比动画快,如果用户对一个对象频繁操作时不处理动画队列就会造成队列堆积,影响到原本的效果,有没有办法解决这个问题呢?当然有!

stop方法解决
<script>
   //停止当前动画,如果动画队列当中还有动画立即执行
   $('div').stop();

   //和stop()效果一致,说明这是默认设置
   $('div').stop(false,false);

   //停止当前动画,清除动画队列
   $('div').stop(true,false);

   //停止当前动画并且结束位置,清除子动画队列
   $('div').stop(true,true);

   //停止当前动画并且到结束位置,如果动画队列当中还有动画立即执行
   $('div').stop(false,true);
</script>

9.节点操作

1.创建节点
<script>
//创建节点
var $a=$('<a href="https://www.baidu.com/?tn=21002492_6_hao_pg"target="_blank">点我百度一下</a>')
//在新的窗口打开链接
$('body').html($a);
</script>
2.克隆节点
<script>
//如果想克隆事件 false  true事件
//jquery对象的变量名要加$,是一种规范,让别人一看就知道这是一个jq对象
var $cloneP=$('p').clone(true);
</script>
3.添加/移动节点
<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title>标题</title>
</head>

<body>
  <input type="button" value="append" id="btnAppend" />
  <input type="button" value="prepend" id="btnPrepend" />
  <input type="button" value="after" id="btnAfter" />
  <input type="button" value="before" id="btnBefore" />
  <input type="button" value="appendTo" id="btnAppendTo" />
  <ul id="ul1">
    <li>我是第1个li标签</li>
    <li>我是第2个li标签</li>
    <li id="li3">我是第3个li标签</li>
    <li>我是第4个li标签</li>
    <li>我是第5个li标签</li>
  </ul>

  <ul id="ul2">
    <li>我是第1个li标签2</li>
    <li>我是第2个li标签2</li>
    <li id="li32">我是第3个li标签2</li>
    <li>我是第4个li标签2</li>
    <li>我是第5个li标签2</li>
  </ul>

  <script src="jquery-1.12.4.js"></script>
  <script>
    $(function () {
      //1.append(); 
      //元素A.append(元素B); 把元素B追加到元素A中,作为元素A的最后一个子元素添加.   
      $('#btnAppend').click(function () {
        //1.1 新建的li标签,追加到ul1中去
        // var $liNew = $('<li>我是蔡徐坤</li>');
        // $('#ul1').append($liNew);

        //1.2 把ul2中已知的某一个li标签,追加到ul1中.  剪切后追加
        // var $li32 = $('#li32');
        // $('#ul1').append($li32);

        //1.3 把ul1中已知的某一个li标签,追加到ul中.  剪切后追加
        var $li3 = $('#li3');
        $('#ul1').append($li3);
      });;

      //2.prepend(); 
      //元素A.prepend(元素B); 把元素B作为元素A的第一个子元素追加. 
      $('#btnPrepend').click(function () {
        //2.1 新建的li标签,追加到ul1中去
        // var $liNew = $('<li>我是蔡徐坤</li>');
        // $('#ul1').prepend($liNew);

        //2.2 把ul2中已知的某一个li标签,追加到ul1中.  剪切后追加
        // var $li32 = $('#li32');
        // $('#ul1').prepend($li32);

        //2.3 把ul1中已知的某一个li标签,追加到ul中.  剪切后追加
        var $li3 = $('#li3');
        $('#ul1').prepend($li3);

      });

      //3.before()
      //元素A.before(元素B);  把元素B插入到元素A的前面
      $('#btnBefore').click(function () {
        //新建一个div标签,作为兄弟元素插入到ul1的前面
        var $divNew = $('<div>我是新建的div标签</div>');
        $('#ul1').before($divNew);
      });

      //4.after();
      //元素A.after(元素B);  把元素B插入到元素A的后面
      $('#btnAfter').click(function () {
        //新建一个div标签,作为兄弟元素插入到ul1的后面
        var $divNew = $('<div>我是蔡徐坤</div>');
        $('#ul1').after($divNew);
      });

      //5.appendTo();
      //元素B.appendTo(元素A); 把元素B作为元素A的最后一个子元素添加. 
      $('#btnAppendTo').click(function () {
        //5.1 新建的li标签,追加到ul1中去
        var $liNew = $('<li>我是新建的li标签</li>');
        $liNew.appendTo($('#ul1'));
      });


    });
  </script>
</body>

</html>
4.删除/清空节点
<script>
//清空div里面的元素
$('div').empty();
//删除某个元素
$('div').remove();
</script>
5.val()方法

val方法用于设置和获取表单元素的值,列如input,textarea的值

 <input type="text" placeholder="蔡徐坤,请输入">
<script>
//设置值
$('input').val('蔡徐坤');
//获取值
$('input').val();
</script>
6.html()和text()方法

html方法相当于innerHTML text方法相当于innerText
区别:html方法会识别html标签,text方法会那内容直接当成字符串,并不会识别html标签。

7.width()和height()方法
<body>
 <img src="./images/01.jpg" alt="">
<script>
//不带参数表示获取高度
$('img').height();
//带参数表示设置高度
$('img').height(200);

//获取网页的可视区宽高
//获取可视区宽
$(window).width();
//获取可视区高度
$(window).height();
</script>
</body>
8.scollTop和scrollLeft

设置或者垂直滚动条的位置

9.offset方法与position方法

off方法获取元素距离document的位置,返回值为对象,position方法获取的是元素距离有定位的父元素的位置

10.jQuery事件机制

1.on事件注册
// 表示给$(selector)绑定事件,并且由自己触发,不支持动态绑定。
    $(selector).on( "click", function() {});
2.on注册委托事件
 // 表示给$(selector)绑定代理事件,当必须是它的内部元素span才能触发这个事件,支持动态绑定
    $(selector).on( "click",'span', function() {});
3.on注册事件的语法
    // 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
    // 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将有自己执行。
    // 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用)
    // 第四个参数:handler,事件处理函数
    $(selector).on(events,[selector],[data],handler);
5.事件解绑
 // 解绑匹配元素的所有事件
    $(selector).off();
    // 解绑匹配元素的所有click事件
    $(selector).off("click");
6.触发事件
  $(selector).click(); //触发 click事件
    $(selector).trigger("click");//事件触发器trigger
7.jquery事件对象

jquery事件对象其实就是js事件对象的一个封装,处理了兼容性

//screenX和screenY   对应屏幕最左上角的值
    //clientX和clientY   距离页面左上角的位置(忽视滚动条)
    //pageX和pageY   距离页面最顶部的左上角的位置(会计算滚动条的距离)
    
    //event.keyCode 按下的键盘代码
    //event.data    存储绑定事件时传递的附加数据
    
    //event.stopPropagation()   阻止事件冒泡行为
    //event.preventDefault()    阻止浏览器默认行为
    //return false:既能阻止事件冒泡,又能阻止浏览器默认行为。
8.链式编程

通常情况下,只有设置操作才能把链式编程延续下去,因为获取操作的时候,会返回获取到的值,无法返回jquery对象
end()方法,筛选选择器会改变jquery对象的DOM对象,想要回复到上一次的状态.并且返回匹配元素之前的状态

9.each()方法

jquery的隐式迭代会对所有的DOM对象设置相同的值,但是如果我们需要给每一个对象设置不同的值的时候,就需要自己进行迭代了
作用:遍历jquery对象集合,为每一个匹配的元素执行一个函数

// 参数一表示当前元素在所有匹配元素中的索引号
    // 参数二表示当前元素(DOM对象)
    $(selector).each(function(index,element){});
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 一:认识jquery jquery是javascript的类库,具有轻量级,完善的文档,丰富的插件支持,完善的Aj...
    xuguibin阅读 1,702评论 1 7
  • 22、JQ的基础语法、核心原理和项目实战 jQ的版本和下载 jQuery版本 1.x:兼容IE6-8,是目前PC端...
    萌妹撒阅读 1,740评论 0 0
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 649评论 0 3
  • 我喜欢在本子上面写日记,今天头一次在简书上写,但不是日记,算是复习jq摘抄吧。 一.选择器 1.基本选择器 $('...
    坡来了阅读 509评论 0 0
  • JQuery简介 jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScrip...
    伟大的洪立阅读 225评论 0 0