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('

hello

')

第二种,可以传入一个函数,函数的返回值为设置的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的值

你可能感兴趣的:(jQuery DOM事件)