任务25 jqueryDOM&事件-简答题

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

  • 类库(Class Library)简单来说,类库就是一些类的集合,只要我们将一些可以复用的类集中放到一个Library中,我们就可以称其为一个类库。类库中的许多元素(如类、结构、接口、枚举、委托等)之间可能有一些关联,但这些关联通常用于支持一个类概念或接口概念的完整表达。如果我们从一个更高的视角来审视类库,可以发现类库中的一个个“完整的概念”之间是无关的或是关系松散的。
  • 框架,框架的第一含义是一个骨架,它封装了某领域内处理流程的控制逻辑,所以我们经常说框架是一个半成品的应用。由于领域的种类是如此众多,所以框架必须具有针对性,比如,专门用于解决底层通信的框架,或专门用于医疗领域的框架。框架中也包含了很多元素,但是这些元素之间关系的紧密程度要远远大于类库中元素之间的关系。框架中的所有元素都为了实现一个共同的目标而相互协作。框架的目标性非常强,它专注于解决某一特定领域的问题,并致力于为这一特定领域提供通用的解决方案。
  • 框架与类库的区别主要表现在以下几个方面:
    (1)从结构上说,框架内部是高内聚的,而类库内部则是相对松散的。
    (2)框架封装了处理流程的控制逻辑,而类库几乎不涉及任何处理流程和控制逻辑。
    (3)框架具有IOC(控制反转)能力,而类库没有。对于类库中的元素来说,通常都是由我们的应用来调用它;而框架具有这种能 力――在适当的时候调用我们应用中的逻辑。这种能力是通过框架扩展点(或称为“插槽”)来做到的――具体的应用通过扩展点注入自己的逻辑,而在适当的时候,框架会调用这个扩展点中已注册的逻辑。实际上,.NET中的事件(event)发布、预定机制就是IOC的一个代表性例子。
    (4)框架专注于特定领域,而类库却是更通用的。框架着力于一个特定领域的解决方案的完整表达,而类库几乎不针对任何特定领域。
    (5)框架通常建立在众多类库的基础之上,而类库一般不会依赖于某框架。根据框架针对的领域是否具有通用性而将它们分为通用框架(General Framework)和应用框架(Application Framework)。通用框架可以在不同类型的应用中使用,而应用框架只被使用于某一特定类型的应用中

下图描述了类库、框架和应用之间的层次关系。

![]`5TD%C5T]NT@6MOQZS@AVA.png](http://upload-images.jianshu.io/upload_images/3361706-1362695e658379d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.2.jquery 能做什么?

  • jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并对css选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等
    1.操作DOM
    2.操作data
    3.events
    4.ajax
    5.effects&animation
    6.HTML Templating
    7.Widget/Theming
    8.Graphic/Charts
    9.app Architecture

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

  • jQuery对象:通过jQuery包装DOM对象后产生的对象
  • jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价;
  • jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。
    eg:$("#id").innerHTML、document.getElementById("id").html()之类的写法都是错误的
  • 相互装换
    1.jquery对象转化为原生DOM对象
    var $lis = $("li") ; //jQuery对象 
    var li = $lis[0]; //DOM对象
    var $divs = $("div"); //jQuery对象  
    var div = $divs.get(0); //DOM对象
    2.DOM对象转成jQuery对象
    对于DOM对象,只需用$()把DOM对象包装起来,就可得到jQuery对象
    var li=document.getElementById("li"); //DOM对象  
    var $li=$(li); //jQuery对象

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

  • jQuery有绑定事件的方法有bind()、live()、delegate()on()。解除绑定的方法有unbind()、die()、undelegate()和off()

  • bind、unbind、delegate、live 都想对应的在各个版本中弃用或者有局限性,而 on 和 off 兼容了上面绑定的所有方法,推荐使用on和off方法绑定和解除绑定.

  • 使用on绑定事件使用事件代理的写法

    <ul id="ct">
      <li><a href="#">百度</a></li>
    </ul>
    <script type="text/javascript">
      //绑定事件
      $('#ct').on('click','a',function(e){
           //'a'这个参数是一个选择器字符串,用于过滤出被选中的元素中能触发事件的后代元素。如果选择器是 null 或者忽略了该选择器,那么被选中的元素总是能触发事件。
           e.preventDefault();
           //一般都使用: $('#ct')on('click',function()}
      })
      //解除绑定
      $('#ct').off('click','a',function(){})
    </script>
    

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

  • jquery显示影藏元素主要有三个方法,hide(),show(),toggle()

  • 所有jQuery的添加的css操作都是内联样式
    如hide()等同于<p style="display:none"></p>,show等同于<p style="display:block"></p>

    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
      <meta charset="UTF-8">
      <title>显示和隐藏</title>
      <script type="text/javascript" src="jquery-3.1.1.js"></script>
      <script type="text/javascript" src="hide-show.js"></script>
      <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      <body>
      <p>hello world</p>
      <button id="show">显示</button>
      <button id="hide">隐藏</button>
      <button class="toggle">显示/隐藏</button>
      <script type="text/javascript">
      
      $('#show').on('click',function(){
          $(this).show(easing)//
          //show(参数)可以使用毫秒数show(500),
          //也可以使用linear等效果
      })
      $('#hide').on('click',function(){
          $(this).hide(linear)
          //show(参数)可以使用毫秒数show(500)
          //也可以使用linear等效果
      })
      $('.toggele').on('click',function(){
          $(this).toggle();
      })
      //jquery官网的实例
      for(var i=0;i<10;i++){
          $("<div>").appendTo(document.body)
      };
      $(document).ready(function(){
          $("div").click(function(){
              $(this).hide(2000,function(){
                  $(this).remove();
              })
          })
      })
    </script>
    

6.jquery 动画如何使用?

  • animate() 根据一组 CSS 属性,执行自定义动画
    $(selector).animate({params},speed,callback); 必需的 params 参数定义形成动画的 CSS 属性 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒 可选的 callback 参数是动画完成后所执行的函数名称。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="jquery-3.1.1.js"></script>
<style type="text/css">
#ct{
    width: 200px;height: 200px;
    border: 1px solid #ccc;
}
.div1{
    width: 100px;height: 100px;
    background: orange;
    position: relative;
    /*必须要有position*/
}
</style>

 </head>
  <body>
<div id="ct">
    <button id="btn">点我动画效果</button>
    <div class="div1"></div>
</div>
<script type="text/javascript">
    $('#btn').on('click',function(){
        $('.div1').animate({width:50,height:50})
                  .animate({opacity:0.5})
                  .animate({left:100})
                  .animate({top:100})

        $(".div1").animate({width:50,height:50})
                  .animate({left:0})
                  .animate({top:0})
    })
</script>
</body>
</html>

jsbin地址

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

  • 获取 HTML 内容:html()包括html标签和 文本
  • 获取 HTML 内部文本:text()只有文本
  • 设置 HTML内容: html('<p>你好<p>')
  • 设置 HTML内容文本:text('你好')
    demo演示地址

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

  • val() 获取匹配的元素集合中第一个元素的当前值。设置匹配的元素集合中每个元素的值。
  • 获取表单输入或选择的内容
    <input type="text" id="username"
    value='wangsan'> $("#username").val();
  • 设置表单输入或选择的内容
    <input type="text" id="username"
    value='wangsan'> $("#username").val('lisi');
  • 设置元素属性
    <input type="text" id="username">
    $("#username").attr("name", "username");
  • 获取元素属性
    <input type="text" id="username">
    $("#username").attr("id"); //username
  • 注意:在jquery里,css才能取该标签定义的css属性,attr只能取该标签里自带的属性,否则无效。

代码题

代码1
代码2
为何点击奢侈品2会回到顶部?因为a链接有默认行为,a链接必须有一个href属性,此时设置为#,点击链接会刷新页面回到顶部,event.preventDefault()阻止默认行为、javascript:void(0)等方法,阻止其刷新页面的行为发生。
代码3
为何设置.prod事件不行?因为事件绑定已经在页面刷新完成前建立好了,添加的新元素需要重新绑定,否则不会有hover效果,所以需使用父元素事件代理。

版权为饥人谷和作者所有,转载使用请注明出处

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

推荐阅读更多精彩内容

  • 问答 1.说说库和框架的区别? 类库(Class Library):类库就是一些类的集合,只要我们将一些可以复用的...
    鸿鹄飞天阅读 265评论 0 1
  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    程序员poetry阅读 16,641评论 18 503
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,329评论 0 8
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,329评论 24 450
  • 遵循css和html各控制表现和结构的原则,css既可以控制字体,又可以控制背景。包括颜色,字体有无衬线,字体是斜...
    科幻经典阅读 393评论 0 0