3. jquery 对象和 DOM 原生对象有什么区别?如何转化?
- 区别:
dom元素: 通过原生js获取的dom节点是dom元素; 只能使用dom元素的属性和方法。
jquery元素: 通过jquery选择器选择的元素是jquery元素;只能使用jquery的属性和方法。 - 转化:
- dom->jquery,加$(dom)
- jquery->dom, jquery元素是以数组形式展现,选取数组的第几项就能转换为dom元素如: var $p1 = $('.p1'); var p1 = $p1[0]; //转换为dom元素
4. jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?
绑定事件方法:bind live delegate on
- .bind()
$('a').bind('click', function() {
alert("That tickles!")
});
这是最简单的绑定方法了。JQuery扫描文档找出所有的$(‘a’)元素,并把alert函数绑定到每个元素的click事件上。
- unbind(): 移除 bind 绑定的事件
- .live()
$('a').live('click', function() {
alert("That tickles!")
});
JQuery把alert函数绑定到$(document)元素上,并使用’click’和’a’作为参数。任何时候只要有事件冒泡到document节点上,它就查看该事件是否是一个click事件,以及该事件的目标元素与’a’这一CSS选择器是否匹配,如果都是的话,则执行函数。
- .delegate()
$('#container').delegate('a', 'click', function() {
alert("That tickles!")
});
JQuery扫描文档查找$(‘#container’),并使用click事件和’a’这一CSS选择器作为参数把alert函数绑定到$(‘#container’)上。任何时候只要有事件冒泡到$(‘#container’)上,它就查看该事件是否是click事件,以及该事件的目标元素是否与CCS选择器相匹配。如果两种检查的结果都为真的话,它就执行函数。
- .on()
// Bind
$( "#members li a" ).on( "click", function( e ) {} );
$( "#members li a" ).bind( "click", function( e ) {} );
// Delegate
$( "#members" ).on( "click", "li a", function( e ) {} ); //注意子元素参数位置
$( "#members" ).delegate( "li a", "click", function( e ) {} );
- .off(): 移除 on 绑定的事件
推荐使用.on():on事件绑定把上面三种方法统一了,用起来更方便
on绑定事件使用事件代理的写法:
$( "#members" ).on( "click", "li a", function( e ) {} );