3. jquery 對象和 DOM 原生對象有什么區(qū)別迄沫?如何轉(zhuǎn)化顾患?
- 區(qū)別:
dom元素: 通過原生js獲取的dom節(jié)點是dom元素; 只能使用dom元素的屬性和方法摸袁。
jquery元素: 通過jquery選擇器選擇的元素是jquery元素;只能使用jquery的屬性和方法。 - 轉(zhuǎn)化:
- dom->jquery庇忌,加$(dom)
- jquery->dom, jquery元素是以數(shù)組形式展現(xiàn)舞箍,選取數(shù)組的第幾項就能轉(zhuǎn)換為dom元素如: var $p1 = $('.p1'); var p1 = $p1[0]; //轉(zhuǎn)換為dom元素
4. jquery中如何綁定事件?bind皆疹、unbind疏橄、delegate、live略就、on捎迫、off都有什么作用?推薦使用哪種表牢?使用on綁定事件使用事件代理的寫法窄绒?
綁定事件方法:bind live delegate on
- .bind()
$('a').bind('click', function() {
alert("That tickles!")
});
這是最簡單的綁定方法了。JQuery掃描文檔找出所有的$(‘a(chǎn)’)元素崔兴,并把alert函數(shù)綁定到每個元素的click事件上彰导。
- unbind(): 移除 bind 綁定的事件
- .live()
$('a').live('click', function() {
alert("That tickles!")
});
JQuery把alert函數(shù)綁定到$(document)元素上,并使用’click’和’a’作為參數(shù)敲茄。任何時候只要有事件冒泡到document節(jié)點上位谋,它就查看該事件是否是一個click事件,以及該事件的目標元素與’a’這一CSS選擇器是否匹配堰燎,如果都是的話掏父,則執(zhí)行函數(shù)。
- .delegate()
$('#container').delegate('a', 'click', function() {
alert("That tickles!")
});
JQuery掃描文檔查找$(‘#container’)秆剪,并使用click事件和’a’這一CSS選擇器作為參數(shù)把alert函數(shù)綁定到$(‘#container’)上赊淑。任何時候只要有事件冒泡到$(‘#container’)上,它就查看該事件是否是click事件鸟款,以及該事件的目標元素是否與CCS選擇器相匹配膏燃。如果兩種檢查的結(jié)果都為真的話茂卦,它就執(zhí)行函數(shù)何什。
- .on()
// Bind
$( "#members li a" ).on( "click", function( e ) {} );
$( "#members li a" ).bind( "click", function( e ) {} );
// Delegate
$( "#members" ).on( "click", "li a", function( e ) {} ); //注意子元素參數(shù)位置
$( "#members" ).delegate( "li a", "click", function( e ) {} );
- .off(): 移除 on 綁定的事件
推薦使用.on():on事件綁定把上面三種方法統(tǒng)一了,用起來更方便
on綁定事件使用事件代理的寫法:
$( "#members" ).on( "click", "li a", function( e ) {} );