第二十五弹-jquery基础

1.说说库和框架的区别?

  • 库的的概念和意义是用来提供一些方法的集合,避免重复定义相同功能的函数并具有一定的模式兼容性。例如jquery
  • 框架的相对于库更重量级一些,倾向于提供整套的解决方案,倾向于创造一些需要你来遵守的规则和范例。例如angular.js

2.jquery 能做什么?

jQuery 库包含以下特性:

  • HTML 元素选取
  • HTML 元素操作
  • CSS 操作
  • HTML 事件函数
  • JavaScript 特效和动画
  • HTML DOM 遍历和修改
  • AJAX

HTML 元素选取 跟document.querySelectorAll()用法很相似


$("a")  返回所有的a元素
$(".category")返回所有的含有category类的元素
$("#header") 返回id为header的元素
$("ul li")  返回ul中的所有li
$("ul").find("li")   =$("ul li")
$("ul li").eq(0) 返回ul中的第一个li元素

  • HTML 元素操作
    text() 设置或返回所选元素的文本内容
    html() 设置或返回所选元素的内容(包括 HTML 标记)
    val() 设置或返回表单字段的值
    attr() 设置或返回元素的属性
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>class25</title>
    <style>
    a.btn{
      display: inline-block;
      margin: 0 10px;
      padding: 5px;
      text-decoration: none;
      color: black;
      border: 1px solid #ccc;
      border-radius: 3px;

    }
    </style>
  </head>
  <body>
    <ul class="pannel">
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ul>
    <a href="" class="btn">点我</a>
    <form action="#">
      <ul>
        <li>用户名</li>
        <li><input type="text" name="name"></li>
      </ul>
    </form>
    <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
  <script>
    $(".pannel li").text() //123
    $(".pannel li").html()  //1
    $(".pannel li").text("123")  //[<li>​123​</li>,<li>​123​</li>,<li>​123​</li>​]
    $(".pannel li").html("<a href=''>这是一个链接</a>")
    $("a").attr("class") //btn
    $("a").attr("class",$("a").attr("class")+" hehe")   //class="btn hehe"
    $("input").val("xiaohan")  //设置input元素值
    $("input").val()             //获取input元素值
</script>
  </body>
</html>
  • CSS 操作
$("a").css("background-color","#ccc")  //直接给元素设置样式
//添加和移除CSS
$("a").removeClass("btn")
$("a").removeClass()
$("a").addClass("btn")

3.jquery 对象和 DOM 原生对象有什么区别?如何转化?

DOM元素是用原生js获取的,jquery元素是利用jquery选择器获取的
jquery ->DOM :jquery [0]和jquery.get(0);
DOM->jquery :$(DOM)

4.jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?

事件的绑定:
第一种方法: 直接使用关键字绑定 $(...).click(handler(e))、$(...).keydown(handler(e)) 等

click 鼠标单击
dbclick 鼠标双击
** keydown** 键盘按下
** keypress** keypress 事件与 keydown 事件类似。当按钮被按下时,会发生该事件
** keyup** 键盘弹起
** mouseover ** 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。与mouseout合用
** mouseenter ** 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。与mouseleave合用
** mouseout ** 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件
** mouseleave** 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
** change** 当用于 select 元素时,change 事件会在选择某个选项时发生。当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。
** scroll ** 当用户滚动指定的元素时,会发生 scroll 事件
** focus** 当元素获得焦点时,发生 focus 事件

** blur ** 当元素失去焦点时,发生 focus 事件
** resize ** $("window").resize(function(e){}) 当浏览器窗口大小改变时触发
** hover ** 跟CSS中的hover一样 只不过触发函数要写两个

  • mouseover和mouseenter 的区别
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <style>
    .div{
      width: 500px;
      margin-bottom: 20px;
      padding: 1px;
      background-color: #ccc;
      vertical-align: middle;
      text-align: center;
    }
    .div h2{
      background-color: white;
      display: inline-block;
    }
  </style>
  <body>
      <p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
      <p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
      <div class="div over">
        <h2>被触发的 Mouseover 事件<span></span></h2>
      </div>
      <div class="div enter">
        <h2>被触发的 Mouseenter 事件<span></span></h2>
      </div>
      <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
      <script type="text/javascript">
      $(function(){
        var x=0;
        var y=0;
        $(".over").mouseover(function(e){
          $(this).find("span").text(++x);
        });
        $(".enter").mouseenter(function(e){
          $(this).find("span").text(++y);
        });
      });

      </script>
  </body>
</html>
Paste_Image.png
  • mouseout 和mouseleave的区别
      <p>不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。</p>
      <p>只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。</p>
      <div class="div over">
        <h2>被触发的 Mouseout次数 <span></span></h2>
      </div>
      <div class="div enter">
        <h2>被触发的 Mouseleave次数<span></span></h2>
      </div>
      <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
      <script type="text/javascript">
      $(function(){
        var x=0;
        var y=0;
        $(".over").mouseout(function(e){
          $(this).find("span").text(++x);
        });
        $(".enter").mouseleave(function(e){
          $(this).find("span").text(++y);
        });
      });
Paste_Image.png
  • hover 的用法
$('.btn').hover(function () { $(this).addClass('hover');}, function () { $(this).removeClass('hover');});

第二种方法:使用 绑定事件函数
$(...).on( eventType,handler(e));


bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?

  • bind( events,handler(e)) 为元素逐一绑定事件处理函数
  • unbind( events) 为元素解绑事件函数
  • delegate( selector, events, handler(e) ) 事件代理,当元素下面的selector元素触发事件执行
  • .undelegate( selector, events) 解绑事件代理
  • live( events,handler(e)) 事件代理 ,当事件冒泡到document元素时执行,
  • on(events,handler(e)) 为元素逐一绑定事件处理函数
  • on(events,selector,handler(e)) 事件代理 当元素下面的selector元素触发事件执行
  • 另外值得一提的是 所有的事件绑定函数 在1.4版本以后都支持传入多个event
    推荐使用on函数
    on既可以为元素逐一绑定事件,又可以使用事件代理
    live函数在1.7版本以前就过时了(但百度提供的在1.9才不能使用,可能是做了兼容),效率又不高。
    delegate函数也逐渐使用 on函数来替代,现在仍然可以用,但不推荐

5.jquery 如何展示/隐藏元素?

  • hide(speed,callback); //显示
  • show(speed,callback); //隐藏
  • toggle(speed,callback); //切换
    其中speed 代表执行时间,可以是 slow fast normal 三个字符串也可以是毫秒值
    callback是完成后的调用函数
  <style>
    .box{
      float: left;
      background-color: #ccc;
      margin-right: 10px;
      padding: 0 5px;
      display: none;
    }
  </style>
  <body>
      <button id="show">show</button>
      <button id="hide">hide</button>
      <button id="toggle">toggle</button>
     <div class="box">hello</div>
     <div class="box">world!</div>
     <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
      <script type="text/javascript">
      $(function(){
        $("#show").on("click",function (){
          $(".box").first().show("fast",function showNext(){
            $(this).next(".box").show("fast",showNext);

          });
        });
        $("#hide").on("click",function(){
          $(".box").last().hide("fast",function hideNext(){
            $(this).prev(".box").hide("fast",hideNext);

          })
        });
        $("#toggle").on("click",function(){
          $(".box").toggle("slow");
        })
      })
      </script>
Paste_Image.png

6.jquery 动画如何使用?

animate({params},speed,callback);
params 代表css属性集合
speed 代表 动画执行时间,可以是slow fast normal 三个字符串也可以是毫秒值
callback 是回调函数

      <script type="text/javascript">
      $(function(){

        $("#animate").on("click",function(){
          $(".box").animate(
            {
              "margin-left":"100px",
              width: "200px",
              height: "200px",
            },"fast",function(){
              $(".box").animate(
                {
                  "margin-left" :"10px",
                  width: "100px",
                  height: "100px"
                },"fast"
              );
            });
        })
      })
      </script>
Paste_Image.png

7.如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?

text() 设置或返回所选元素的文本内容,设置文本传入字符串参数
html() 设置或返回所选元素的内容(包括 HTML 标记)设置html传入字符串参数

8.如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?

  • 获取表单输入的内容
    $("#name").val();
  • 获取表单选择的内容
    <select class="" name="year">
        <option value="2015">2015年</option>
        <option value="2016">2016年</option>
      </select>
$("select option:selected").text()  //2015年 获取选中文本
$("select").val()             //2015 获取选中的值
  • 设置和获取元素属性
    $(selector).css("background-color"); //获取样式
    $(selector).css("background-color","#ccc") //设置样式
    $("input").attr("placeholder","hello") //设置属性
    $("input").attr("placeholder") //获取属性

代码题:
代码


本教程版权归小韩同学和饥人谷所有,转载须说明来源


参考文档:
饥人谷课件-jquery基础
饥人谷课件-jquery基础2
事件绑定:参考自jquery中文API
常用的事件:参考自w3c事件

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

推荐阅读更多精彩内容

  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,312评论 0 8
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,316评论 0 2
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,487评论 0 106
  • 十二月的到来,伴随校运会。 所有班级运动健将踊跃而出,他们拼搏,流下汗水,突破自己,赢得胜利! 而我,也成为了其中...
    爬梯爬梯野阅读 167评论 6 1
  • 不管是学习还是达成某一个成果,我们都需要注意以下三点:目标>方法>行动。 目标,其实行动的一个源动力,是“明灯”。...
    Freedom_财商教育阅读 425评论 0 3