jQuery DOM事件

  • 说说库和框架的区别?
    • 库(library)
      就像一套把jacascript重新提取包装的工具包,提供许多工具来简化编写代码的过程,例如'jQuery'、'MooTools'、'YUI'
    • 框架(framework)
      规定了你的代码应该按照怎样的结构来呈现,就像一套代码模板,然后解决特定的问题,例如'Backbone'、'requireJS'、'socketIO'
  • jquery 能做什么?
    • 提供友好的API,例如,DOM的操作和获取都是一个API,不传参数是获取,传了参数是操作,对开发人员十分便利
    • 支持链式操作,例如,$('#id').addClass('cls').removeClass('cls'),特别方便
    • 提供操作简单的动画效果
  • jquery 对象和 DOM 原生对象有什么区别?如何转化?
    • jQuery对象
      jQuery对象是一个伪数组,可以支持jQuery的操作,但是不可以使用DOM的操作,可以用两种方法转化成DOM对象,一种是$('div')[0],另一种是'$('div').get(0)'
    • DOM对象
      DOM对象只能使用DOM提供的方法,不能使用jQuery的操作,可以直接把DOM对象传入'$(node)'来转化成jQuery对象
  • jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?
    • jquery中如何绑定事件?
      这是jQuery事件绑定的语法
.on( events [, selector ] [, data ], handler(eventObject) )

例如,

$('#btn').on('click',function(event){
    alert('hello')
})
- bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?
    - bind,为元素绑定一个事件处理程序
    - unbind,从元素上删除一个以前附加事件处理程序

不传参数的话会移除元素上所有的事件处理程序

$('#btn').unbind()

为了更好的控制最好传入参数,如

var handler = function(){
    alert('hello')
}
$('#btn').bind('click',handler)
$('#btn').unbind('click',handler)
    - delegate,为匹配选择器的元素绑定一个或多个事件处理函数,常用来绑定事件代理(委托)

语法,其中selector为绑定事件的元素

.delegate( selector, eventType, handler(eventObject) )
    - live,附加一个事件处理函数到匹配目前选择器的所有元素,包括现在和未来,意味着动态绑定事件处理函数
    - on,在选定的元素上绑定一个或多个事件处理程序
    - off,移除用on绑定的事件处理函数
- 推荐使用哪种?

在jQuery1.7以后都推荐使用on
- 使用on绑定事件使用事件代理的写法?
下面的例子用事件代理的方式为ul绑定了事件处理程序,当触发元素为li的时候才触发事件处理程序

$('ul').on('click','li',function(){
  alert('hello')  
})
  • jquery 如何展示/隐藏元素?
    • 第一种,jQuery会自动保存元素的dislay属性,如果原来为inline的元素再次显示后还是为inline
$('div').show()
$('div').hide()
- 第二种
$('div').css('display','block')
$('div').css('display','none')
  • jquery 动画如何使用?
    除了内置的淡入淡出和滑动的动画效果,jQuery还支持自定义的动画,使用animate()方法,使用animate方法需要注意html元素的位置都是静态的。如果需要对位置进行操作,需要先把position属性设置不为static
//语法
$(selector).animate({params},speed,callback)
- params参数是必须的,定义形成动画的css属性
$(selector).animate({
    left: '200px',
    opacity: '0.5',
    height: '150px',
    width: '150px'
})
- speed参数是可选的,规定效果时长,可以是'slow'、'fast'和毫秒数
- callback参数是可选的,表示动画完成后执行的函数名称
  • 如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?
    • 设置和获取元素内部 HTML 内容
      • 获取HTML内容
        .html()用来获取元素的HTML内容,如果有匹配到多个元素,只获取第一个元素的HMTL内容
      • 设置HTML内容
        如果匹配到多个元素,会修改所以匹配到的元素的HTML内容,'.html(htmlString)'或者'.html(function(index,oldhtml))',两种用法,第一个可以传入一个html字符串,例如
$('div').html('<p>hello</p>')

第二种,可以传入一个函数,函数的返回值为设置的html内容,函数有两个参数,一个是当前元素在所选元素里面的索引,一个是要被修改的html内容,例如

$('div').html(function(index,oldhtml){
    return 'index: '+index+'oldhtml: '+oldhtml
})
- 设置和获取元素内部文本
    - 获取文本内容

'.text()'可以获取元素的内部文本,注意,'.text()'获取的不是匹配到的第一个元素的文本内容,而是所有匹配到元素的文本内容,相当于DOM的innerText属性
- 设置文本内容
设置文本的内容和设置HTML内容是一样的,有两种方式,第一种直接传入文本,例如

$('p').text('hello')

第二种传入一个函数,函数有两个参数

$('p').text(function(index.oldtext){
    return '索引: '+index+' 以前的: '+oldtext
})
  • 如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?
    • 设置和获取表单用户输入或者选择的内容
      • 获取表单内容
        '.val()',对于输入框,只要用户输入了内容,就可以通过'.val()'来获取,对于单选框和复选框。'.val()'可以获取设置的value
      • 设置表单内容
        对于设置输入框的内容和'.text()'和'.html()'的设置方法一样,但是对于单选框、多选框和选择框,可以传递一个数组作为参数,匹配到这个数组项的将被选中,例如
//这是修改单一选项的值
$("#single").val("Single2");
//这是修改multiple select的值,匹配到数值的value的选项会被选中
$("#multiple").val(["Multiple2", "Multiple3"]);
//这是修改input单选框和多选框的值,如果value与数组的值匹配将会被选中
$("input").val(["check1","check2", "radio1" ]);
- 如何设置和获取元素属性
    - `.attr(attributeName)`可以用来获取元素的属性
    - 设置元素属性的时候有三种用法
        1. `.attr( attributeName, value )`

直接设置value就是要设置的属性值
2. '.attr( attributes )'
可以传进去一个对象,对象用key:value的形式设置多个属性的值,例如

$( "img" ).attr({
  src: "/resources/hat.gif",
  title: "jQuery",
  alt: "jQuery Logo"
});
        3. '.attr( attributeName, function(index, attr) )'

函数接受的参数分别是元素在集合中的索引和原来attrbuteName的值

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

推荐阅读更多精彩内容

  • 问答 1.说说库和框架的区别? 类库(Class Library):类库就是一些类的集合,只要我们将一些可以复用的...
    鸿鹄飞天阅读 264评论 0 1
  • 问答部分 一、说说库和框架的区别? 库~是一个提供了封装好很多方法的工具,在这个工具里面,用与不用都是由你决定,控...
    dengpan阅读 345评论 1 2
  • 1.说说库和框架的区别? 库:用来提供一些方法的集合,避免重复定义相同功能的函数并具有一定的模式兼容性, 框架,规...
    candy252324阅读 297评论 0 0
  • 1. 说说库和框架的区别? 库(library):我们可以简单的认为它就是一个工具箱,里面有可以直接拿来使用的方法...
    小木子2016阅读 203评论 0 1
  • 说说库和框架的区别? 库是将代码集合成的一个产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。面向过程的...
    块垒阅读 215评论 0 1