亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入淺出 jQuery中的事件機(jī)制

 更新時(shí)間:2016年08月23日 09:01:02   作者:學(xué)習(xí)會(huì)讓你青春永駐  
本文重點(diǎn)給大家介紹jquery中的事件機(jī)制,涉及到onload和ready兩者的區(qū)別介紹,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧

首先呢,我們先來看一下,jQuery中的ready事件,它的作用有些類似于window中的onload事件,只不過二者的區(qū)別在于,onload事件是要等到網(wǎng)頁中的dom節(jié)點(diǎn)加載完成,并且css進(jìn)行樣式渲染后,JavaScript中進(jìn)行了預(yù)加載后再執(zhí)行,而ready事件呢,是在網(wǎng)頁中的標(biāo)簽被解析為DOM節(jié)點(diǎn)是就執(zhí)行其中的函數(shù),直白點(diǎn)說,ready執(zhí)行的比onload早,那么我們?cè)谟胘Query的時(shí)候,需要做一個(gè)ready的執(zhí)行定義:

//ready的作用,是為具體加載的實(shí)現(xiàn).
$(document).ready(function(){
alert('1234');
});
//第二種,少了一個(gè)document,創(chuàng)建一個(gè)空的jQuery對(duì)象.
$().ready(function(){
alert('abcd');
});
//第三種,簡寫版的,
$(function (){
alert('23333');
});

那么我們?cè)賮砜匆幌耾nload和ready的第二個(gè)區(qū)別:

//如果有兩個(gè)window.onload它只會(huì)執(zhí)行最后一個(gè).如果有多個(gè)的話,后邊的會(huì)將前面的覆蓋掉.
window.onload=function(){
alert(1);
}
window.onload = function(){
alert(2);
}
//而window.ready 則可以設(shè)置多個(gè)函數(shù),都去作用.
$(document).ready(function(){alert(1)})
$(document).ready(function(){alert(3)})
//這里的可以設(shè)置多個(gè)函數(shù),是指的對(duì)于同一個(gè)對(duì)象設(shè)置

  那么我們?cè)賮砜匆幌耲Query中的事件綁定,這里我們一onclick事件來舉例,當(dāng)我們?cè)趈s中進(jìn)行事件綁定的時(shí)候,我們分為dom1級(jí)事件,dom2級(jí)事件,其中還包括對(duì)于IE瀏覽器的兼容性考慮,那么當(dāng)我們使用jQuery中的事件機(jī)制時(shí),就不用去考慮那么多了,jQuery內(nèi)部已經(jīng)幫我們做好了兼容性之類的操作,講真,這真的是很方便了我們了:

//DOM1級(jí)事件
var itNode = document.getElementById('id');
itNode.onclick = function(){};
div.onclick = null; DOM1級(jí)中解除事件綁定
//DOM2級(jí)事件
itNode.addEventListener('click',function(){});
itNode.removeEventListener();
itNode.attachEvent();//IE 6 8 7 兼容性處理
detachEvent(); IE中接觸事件綁定
//使用jQuery來操作綁定事件
//$().事件類型(function(){});
//$().事件類型();
$(function(){
$('div').click(function(){//給div綁定了一個(gè)onclick事件
$('div').css('color','green');
});
$('div').mouseover(function(){
$(this).css('color','yellow');
});
});

  這里的一個(gè)主意點(diǎn)就是當(dāng)綁定事件時(shí),事件名是不用寫on的,其實(shí)我們還可以用另一種寫法$('div').on('click',funciton(){});上面的那種寫法就是這種寫法的簡化,二者的作用還是一樣的.那么當(dāng)我們需要給當(dāng)前jQuery對(duì)象添加多個(gè)事件的時(shí)候,我們就可以使用bind方法來處理了:

//$().bind(事件類型,事件處理函數(shù)(分為有名函數(shù),和匿名函數(shù)))
$(function(){
//綁定一個(gè)鼠標(biāo)移動(dòng)上去處理的事件.
$('div').bind('mouseover',function(){
$('div').css('background-color','blue');
});
$('div').bind('mouseout',function(){
$('div').css('background-color','yellow');
});
//一個(gè)函數(shù)綁定多個(gè)事件 這多個(gè)時(shí)間之間只需要用空格隔開.
//這個(gè)雖然可以綁定多個(gè)事件,但是函數(shù)比較單一,不靈活.
$('div').bind('mouseover mouseout',function(){
console.log(1234);
});
//使用對(duì)象的形式來綁定多個(gè)事件,
$('div').bind({
click: function(){console.log(1);},
mouseover: function(){alert(22);},
mouseout : function(){alert(33);}
});
//綁定有名的函數(shù)
function fa(){alert("fa");};
function fb(){alert("fb");};
function fc(){alert("fc");};
$('div').bind('click',fb);
$('div').bind('click',fc);
$('div').unbind();//這樣直接調(diào)用unbind函數(shù)會(huì)直接將所有綁定的事件都取消掉.
$('div').unbind('click');//這樣子就會(huì)將div里邊所有的click綁定的事件取消掉了
//直接解除指定的函數(shù)的綁定,這種方式也只能解除有名函數(shù)的綁定,不能解除指定的匿名函數(shù)的綁定
$('div').unbind('click',fa);
});

  當(dāng)然,在事件處理中,事件對(duì)象無疑是我們經(jīng)常要使用的一個(gè)對(duì)象,在js中,我們獲取對(duì)象時(shí)還要考慮到兼容性問題,但是在jquery中,我們根本就不用考慮,只需要直接使用函數(shù)中傳遞的event參數(shù)就行了:

function(evt){
var evt = evt || window.event;
evt.preventDefault();//主流瀏覽器阻止默認(rèn)事件
evt.returnValue = false;// IE中阻止對(duì)象默認(rèn)事件
evt.stopPropagation();//主流瀏覽器中阻止瀏覽器冒泡
evt.cancelBubble();//IE中阻止瀏覽器冒泡處理
}
$().bind('click',function(evt){
//evt不用做兼容性處理
evt.preventDefault();//阻止瀏覽器的默認(rèn)動(dòng)作.
evt.stopPropagation();//阻止瀏覽器冒泡,
});

  當(dāng)然了,我們jQuery中的事件也是由鍵盤事件,鼠標(biāo)事件,表單事件,甚至還有自定義的事件等等,和js中的基本一樣,總結(jié)起來呢,使用jQuery使我們不用去考慮兼容性問題,同時(shí)代碼量也大大的減少了.

以上所述是小編給大家介紹的jQuery中的事件機(jī)制,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論