当前位置: 代码迷 >> 综合 >> jquery库使用(一)-加载-选择器-css属性操作-特殊效果-animate-链式调用
  详细解决方案

jquery库使用(一)-加载-选择器-css属性操作-特殊效果-animate-链式调用

热度:45   发布时间:2024-02-01 01:23:36.0

jquery

    • 一、jquery加载
    • 二、选择器
      • 1. 选择器的使用
      • 2. 选择集的过滤
    • 三、css属性操作
      • 1. 读写css属性
      • 2.样式类名操作
      • 3. 获取元素的索引值和当前元素
      • 4. html内容/text内容/属性值获取与设置
    • 四、jquery的特殊效果
      • 1. 淡入淡出
      • 2. 显示与隐藏
      • 3. 向上卷起和向下展开
      • 4. 每个效果都有三个参数 (时间,运动曲线,回调函数) -- 一般只是用时间和回调函数;运动曲线一般都为默认的匀速
      • 5. 实例:
    • 五、animate动画
      • 1. 使用方法
      • 2. 实例一:
      • 3. 实例二:滑动选项卡
    • 六、链式调用
      • 1.链式调用解释
      • 2. 层级菜单效果
    • 七、总结

一、jquery加载

  1. 引入jquery的方法

    <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    
  2. 引入后使用容易错的地方
    不能直接在jquery引入标签中写js代码,要重新开一个script标签,然后在写js代码

  3. ready方法–加载

    1. 问题的引入:
      将获取元素的语句写到页面头部,会因为元素还没有加载而出错,jquery提供了ready方法解决这个问题

    2. 完整写法

      $(document).ready(function(){......})
      
    3. 简写

      $(function(){......})
      
  4. ready与window.onload的比较

    1. ready的加载速度比window.onload快
    2. 快的原因:
      1. window.onload是等标签加载完后再渲染后再执行
      2. ready是等标签加载完后就运行

二、选择器

1. 选择器的使用

  1. 可以使用length属性来判断是否选中,
  2. 在写样式的使用遇到带"-“的可以写成驼峰式也可以写成带”-"的
    样式中怎么写这里就怎么写
    $(document) //选择整个文档对象
    $("#myId")  // 选择id为myId的元素
    $(".myClass")  // 选择class为myClass的元素
    $("li")  // 选择所有的li元素
    $("#ul1 li span") // 选择id为ul1元素下的所有li元素下的span
    $("input[name=first]")  // 选择name属性等于first的input元素
    
    实例:
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>选择器</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">// 使用ready$(function(){var $div = $('#div1');$div.css({"color":"red"});// 多个divvar $div2 = $('.box');$div2.css({"color":"green"});var $li = $('.list li');// 带"-"的样式属性可以写成驼峰式也可以直接写成带"-"的$li.css({"color":"red","background-color":"blue"});});</script></head>
    <body><div id="div1">这是一个div元素</div><div class="box">这是第二个div元素</div><div class="box">这是第三个div元素</div><!-- ul.list>li{$}*8 --><ul class="list"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul></body>
    </html>
    
    效果:
    在这里插入图片描述

2. 选择集的过滤

  1. 修饰过滤

    $('#ul1 li:first') //选择id为ul1元素下的第一个li
    $('#ul1 li:odd') //选择id为ul1元素下的li的奇数行 
    $('#ul1 li:eq(2)') //选择id为ul1元素下的第3个li 
    $('#ul1 li:gt(2)') // 选择id为ul1元素下的前三个之后的li 
    $('#myForm :input') // 选择表单中的input元素 
    $('div:visible') //选择可见的div元素
    
  2. 函数过滤

    $('div').has('p')  // 选择含有p元素的div元素
    $('div').not('.myClass')  // 选择class不等于myClass的div元素
    $('div').filter('.myClass') // 选择class等于myClass的div元素
    $('div').eq(5)  // 选择第6个元素
    $('div').first(); //选择第1个div元素 
    

    实例:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>选择集过滤</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){/*var $div = $('div');$div.css({'backgroundColor':'gold',});*/// 上面的只用一次的话可以这样写$('div').css({"backgroundColor":'gold'});// 选择div中带有p标签的$('div').has('p').css({"fontSize":"30px"});// 选择第几个 eq(x) 从0 开始$('div').eq(4).css({"textIndent":"20px"});});</script>
    </head>
    <body><!-- p标签默认有行高 --><div>1</div><div><p>2</p></div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div></body>
    </html>
    

    效果
    在这里插入图片描述

  3. 选择集的转移

    $('div').prev('p'); //选择div元素前面的第一个p元素 
    $('div').next('p'); //选择div元素后面的第一个p元素 
    $('div').closest('form'); //选择离div最近的那个form父元素 
    $('div').parent(); //选择div的父元素 
    $('div').children(); //选择div的所有子元素 
    $('div').siblings(); //选择div的同级元素 
    $('div').find('.myClass'); //选择div内的class等于myClass的元素
    

    实例:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>选择集过滤</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){// 第五个div的前一个 .prev() : 是前一个 .prevAll() 同辈前面所有$('div').eq(4).prev().css({"color":"red"});// 第五个div中的下一个 next() : 是下一个 $('div').eq(4).next().css({"color":"red"});// find(x) : 找div中有 x 类的$('div').find('.tip').css({"fontSize":"30px"});// 除了我之外的同级元素// $('div').sibings();});</script>
    </head>
    <body><!-- p标签默认有行高 --><div>1</div><div><p>2</p></div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div><span>8</span><span class="tip">9</span></div></body>
    </html>
    

    效果:
    在这里插入图片描述

  4. 判断选择器是否选中
    用length

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>判断选择器是否选中</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){$div = $('#div1');alert($div.length); // 判断是否选中 1// 没有选中元素,jquery是不会报错的 程序正常运行$div2 = $('#div2'); alert($div2.length); // 判断是否选中 0 // 通过length属性判断是否选中了元素// if ($div2.length>0)});</script>
    </head>
    <body><div id="div1"></div></body>
    </html>
    

三、css属性操作

1. 读写css属性

  1. 读取的方法:
    例:$("#box").css(“fontSize”)
  2. 写的方法:
    $("#box").css(“fontSize”)=“30px”
  3. 使用原生js无法读取行间没有定义的css属性值,读出来为空
  4. 实例:
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>css方法</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">// 设置行间样式$(function(){var $div = $('#box');// 读去属性 cssvar sTr = $div.css('fontSize');alert(sTr);// 原生js无法读取行间没有定义的css属性值var oDiv = document.getElementById("box");alert(oDiv.style.fontSize); // 空字符串// 写属性值$div.css({"fontSize":"30px","backgroundColor":"pink","color":"red"});// 一个的话可以用下面的$div.css("height","30px");// $div.css('color') = 'blue';});</script>
    </head>
    <body><div id="box">div元素</div>
    </body>
    </html>
    

2.样式类名操作

  1. 获取:var $div = $(’.box’);

  2. 添加类样式

    在原来的基础上添加 big 的样式名
    $div.addClass('big');
    
  3. 删除类样式

    移出原有的red类样式
    $div.removeClass('red');
    
  4. 重复切换类样式

    重复切换anotherClass类样式,即有就加上没有就去掉
    $div.toggleClass("anotherClass")
    
  5. 绑定click事件添加或删除样式

    1. 添加和删除样式的方法一

      $('#btn').click(function(){// 判断是否有col01这个类属性 有返回trueif ($('.box').hasClass('col01')){$('.box').removeClass('col01');}else{// 添加样式$(".box").addClass('col01');}
      });
      
    2. 方法二 使用toggleClass

      $('#btn').click(function(){// 属性中没有这个类属性就加上,有就去掉$('.box').toggleClass('col01');
      });
      

3. 获取元素的索引值和当前元素

  1. 用.index()获取元素的索引值
  2. 使用实例:
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>获取元素索引值</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){var $li = $('.list li'); // 获取8个lialert($li.length); // 8// 索引值从0开始的// 获取索引值 .index()alert($li.eq(3).index()); // 3// filter : li中class是myli的alert($li.filter('.myli').index()); //4});</script></head>
    <body><ul class="list"><li>1</li><li>2</li><li>3</li><li>4</li><li class="myli">5</li><li>6</li><li>7</li><li>8</li></ul></body>
    </html>
    
  3. 用$(this)来获取当前的元素
  4. 实例:选项卡
    1. 代码
      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>选项卡</title><style type="text/css">.btns input{width:100px;height:40px;background-color:#ddd;/*默认有边框*/border:0px;border-radius:15px;}.btns .current{background-color:gold;}.cons div{width:500px;height: 300px;background-color:gold;display:none; /*默认不显示*/text-align: center;line-height: 300px;font-size: 30px;}.cons .active{display: block;}</style><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){var $btn = $('.btns input');var $div = $('.cons div');// alert($btn.length);// alert($div.length);$btn.click(function(){// $(this) -- jquery的: 我点那个按钮那个就是this// this: 原生的this 没有css方法 只有style.color// this 表示当前点击的元素// siblings() : 表示同级之外的其他元素// 点击后这个加上这个类样式,同级的都去掉这个类样式$(this).addClass('current').siblings().removeClass('current');// 弹出当前点击按钮的索引// alert($(this).index());// 选中当前点击按钮的索引值对应的div,然后选中的div加上active样式,同级的去掉active样式$div.eq($(this).index()).addClass('active').siblings().removeClass('active');});});</script>
      </head>
      <body><div class="btns"><input type="button" name="" value="01" class="current"><input type="button" name="" value="02"><input type="button" name="" value="03"></div><div class="cons"><div class="active">选项卡1</div><div>选项卡2</div><div>选项卡3</div></div></body>
      </html>
      
    2. 效果:
      在这里插入图片描述
      在这里插入图片描述

4. html内容/text内容/属性值获取与设置

  1. html() 取出或设置html内容

    // 取出html内容
    var $htm = $('#div1').html();
    // 设置html内容
    $('#div1').html('<span>添加文字</span>')
    
  2. text()取出或设置text()内容

    // 取出文本内容
    var $htm = $('#div1').text();
    // 设置文本内容
    $('#div1').text('<span>添加文字</span>')
    
  3. attr()取出或设置某一属性值

    // 取出图片的地址
    var $src = $('#img1').attr('src');
    // 设置图片的地址和alt属性
    $('#img1').attr({ src: "test.jpg", alt: "Test Image" });

四、jquery的特殊效果

1. 淡入淡出

  1. fadeIn() :淡入
  2. fadeOut() :淡出
  3. fadeToggle():淡入和淡出切换

2. 显示与隐藏

  1. hide():隐藏元素
  2. show():显示元素
  3. toggle():显示与隐藏的切换

3. 向上卷起和向下展开

  1. slideUp():向上卷起
  2. slideDown():向下展开
  3. slideToggle():依次展开卷起

4. 每个效果都有三个参数 (时间,运动曲线,回调函数) – 一般只是用时间和回调函数;运动曲线一般都为默认的匀速

5. 实例:

  1. 实例效果
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>特殊效果</title><style type="text/css">.box{width:300px;height:300px;background-color: gold;display: none;}</style><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){$('#btn').click(function(){// 参数 时间 / 运动曲线(可以不写) / 回调函数/*$('.box').fadeIn(1000,function(){alert("动画完了")});*/// 点一下显示 点一些隐藏/*$('.box').fadeToggle();*/// 显示// $('.box').show();// 隐藏// $('.box').hide();// $('.box').slideDown(); // 向下展开// $('.box').slideUp(); // 向上卷起 收回$('.box').slideToggle(1000,function(){alert("动画完了");}); // 展开和收回});});</script>
    </head>
    <body><input type="button" name="" value="动画" id="btn"><div class="box"></div></body>
    </html>
    

五、animate动画

1. 使用方法

  1. animate() — 有三个参数
    第一个为:变化(字典)
    第二个为:时间(ms)
    第三个回调函数
  2. 默认参数 缓冲运动 时间为400ms-500ms
  3. 如果是两个参数改变的话,如果不设置两个动画效果,直接写到一个animate()的字典参数中话,则为两个一起动

2. 实例一:

  1. 滑块变化实例
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>animate动画</title><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){// 200px 也可以直接写成 200// 默认为缓冲运动 同时动 默认为400-500ms// 如果不要同时动的话要用回调函数$("#btn").click(function(){$(".box").animate({"width":600},1000,function(){$(".box").animate({"height":400},1000,function(){$(".box").animate({'opacity':0});});});});$("#btn2").click(function(){// 每点一次 在基础上每次加100// stop(): 是将前面的动画都关掉然后在做$('.box2').stop().animate({"width":"+=100"});});});</script><style type="text/css">.box,.box2{width:100px;height:100px;background-color:gold;}</style>
    </head>
    <body><input type="button" name="" value="动画" id="btn"><div class="box"></div><br /><br /><input type="button" name="" value="动画" id="btn2"><div class="box2"></div>
    </body>
    </html>
    
    效果: 第一个按钮按下后宽先改变然后再改变高,最后消失(变透明)—占用空间
    第二个按钮没按一次增加100px的宽度
    初始:
    在这里插入图片描述
    在这里插入图片描述

3. 实例二:滑动选项卡

  1. 使用动画做选项卡左右滑动效果
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>选项卡</title><style type="text/css">.btns input{width:100px;height:40px;background-color:#ddd;/*默认有边框*/border:0px;border-radius:15px;outline: none; /*点击时的框*/}.btns .current{background-color:gold;}.slide{width:500px;height: 300px;position: relative;overflow: hidden;}.slide .cons{width:1500px;position: absolute;left:0;top:0;float:left;}.slide .cons div{width:500px;height: 300px;background-color:gold;text-align: center;line-height: 300px;font-size: 30px;float:left;}</style><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){var $btn = $('.btns input');var $div = $('.cons div');// alert($btn.length);// alert($div.length);$btn.click(function(){ $(this).addClass('current').siblings().removeClass('current');$('.cons').stop().animate({"left":-500*$(this).index()});});});</script>
    </head>
    <body><div class="btns"><input type="button" name="" value="01" class="current"><input type="button" name="" value="02"><input type="button" name="" value="03"></div><div class="slide"><div class="cons"><div>选项卡1</div><div>选项卡2</div><div>选项卡3</div></div></div></body>
    </html>
    

六、链式调用

1.链式调用解释

  1. jquery对象的方法会在执行完后返回这个jquery对象,所有jquery对象的方法可以连起来写:
$('#div1') // id为div1的元素 
.children('ul') //该元素下面的ul子元素 
.slideDown('fast') //高度从零变到实际高度来显示ul元素 
.parent()  //跳到ul的父元素,也就是id为div1的元素 
.siblings()  //跳到div1元素平级的所有兄弟元素 
.children('ul') //这些兄弟元素中的ul子元素 
.slideUp('fast');  //高度实际高度变换到零来隐藏ul元素

2. 层级菜单效果

  1. 代码

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>层级菜单</title><style type="text/css">*{margin:0;padding:0;color:#fff;}ul{list-style:none;}a{text-decoration: none;}body{font-size: 16px;font-family: "Microsoft Yahei";}.menu{margin:20px auto 0;/*background-color:gold;*/width:300px;display: bold;/*height:300px; */}.menu .level1{background-color:#3366cc;display: block;text-indent: 10px;line-height: 40px;border-bottom: 1px solid #afc6f6;}.current li a{display: block;background-color:#7aa1ef;/*height:40px;*/line-height:40px;border-bottom: 1px solid #afc6f6;text-indent: 20px;}.menu .level1:hover,.current a:hover{background-color: gold;}.current{display: none;}</style><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript">$(function(){$(".level1").click(function(){// stop(): 是将前面的动画都关掉然后在做 解决多次点击后出点停不下来的bug$(this).siblings().stop().slideToggle().parent().siblings().children("ul").slideUp();});});</script></head>
    <body><ul class="menu"><li><a href="#" class="level1">水果</a><ul class="current"><li><a href="#">香蕉</a></li><li><a href="#">苹果</a></li><li><a href="#"></a></li></ul></li><li><a href="#" class="level1">肉类</a><ul class="current"><li><a href="#">香蕉</a></li><li><a href="#">苹果</a></li><li><a href="#"></a></li></ul></li><li><a href="#" class="level1">海鲜</a><ul class="current"><li><a href="#">香蕉</a></li><li><a href="#">苹果</a></li><li><a href="#"></a></li></ul></li></ul></body>
    </html>
    
  2. 效果
    在这里插入图片描述

七、总结

  1. 选项卡实例中的东西
    1. $(this) – jquery的: 我点那个按钮那个就是this
    2. this: 原生的this 没有css方法 只有style.color
    3. this 表示当前点击的元素
    4. siblings() : 表示同级之外的其他元素
  2. animate动画设置opacity为0后,是设置透明操作,会占用空间
  3. 在做动画的时候防止用户暴力操作,即一直点的话,解决方法如下:
    1. 在做动画前加上.stop()
    2. 设置一个全局锁,在做动画的时候上锁,做完之后解锁后清除之前的操作,将其只剩下一次操作
  4. 滑动选项卡使用到的知识点
    1. 定位
    2. animate动画
    3. 获取元素个数
  相关解决方案