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

jQuery事件用法實(shí)例匯總

 更新時(shí)間:2014年08月29日 14:46:14   投稿:shichen2014  
這篇文章主要介紹了jQuery事件用法實(shí)例匯總,對事件的綁定及各類事件的用法做了較為詳盡的實(shí)例分析,有很好的借鑒價(jià)值,需要的朋友可以參考下

本文以實(shí)例形式詳細(xì)匯總了jQuery中事件的用法,對jQuery的學(xué)習(xí)有很好的參考價(jià)值。分享給大家供大家參考之用。具體用法如下:

1.通過方法名給元素綁定事件:

$('li').click(function(event){})

2.通過bind方法給元素綁定事件:

$('li')
 .bind('click',function(event){})
 .bind('click',function(event){}) 

可見,通過bind,可以給元素綁定多個(gè)事件。

3.事件的命名空間

為什么需要事件命名空間?

→假設(shè),先給li元素綁定2個(gè)click事件。

$('li')
 .bind('click',function(event){})
 .bind('click',function(event){}) 

→現(xiàn)在我們要把其中一個(gè)click事件注銷掉,可能這樣寫:

$('li').unbind('click')

但這樣,我們li所有的click事件都注銷了,這不是我們想要的。使用事件命名空間可解決這一問題,之所以需要事件命名空間,是因?yàn)樗鼮槲覀冊谧N事件的時(shí)候提供了方便。

如何使用事件命名空間?
→在為元素綁定事件的時(shí)候,在事件名稱后加上命名空間,符合格式:事件名稱.命名空間名稱。

$('li')
 .bind('click.editMode',function(event){})
 .bind('click.displayMode',function(event){}) 

→在注銷事件的時(shí)候,可以這樣寫:

$('li').unbind('click.editMode')

4.事件的種類

blur
change
click
dblclick
error
focus
focusin
focusout
keydown
keypress
keyup
load
mousedown
mouseenter
mouseleave
mousemove
mouseout
moseover
mouseup
ready
resize
scroll
select
submit
unload

5.one方法

用于創(chuàng)建一次性事件,一旦這個(gè)事件執(zhí)行了一次后,就會被自動刪除。

$("p").one("click",function(){
 $(this).animate({fontSize: "+=6px"});
})

6.刪除事件

//先給元素添加事件
$("p").click(function(){
 $(this).slideToggle();
})
//再把元素的事件刪除
$("button").click(function(){
 $("p").unbind();
})

7.Event屬性

實(shí)際上,它是jquery的全局屬性,jQuery.Event。每當(dāng)觸發(fā)事件,Event對象實(shí)例就會被傳遞給Event Handler。

可以通過Event的構(gòu)造函數(shù)來創(chuàng)建事件,并觸發(fā)事件。

var e = jQueery.Event("click")
jQuery("body").trigger(e);

甚至可以通過構(gòu)造函數(shù),把一個(gè)匿名對象放在Event中傳遞。

var e = jQuery.Event("keydown", {keyCode : 64});
jQuery("body").trigger(e);

使用的時(shí)候,通過event.data.KeyCode來獲取匿名對象的值。

可以通過jQuery.Event的構(gòu)造函數(shù)把匿名對象放在Event中傳遞,不僅如此,通過事件也可以傳遞匿名對象。

$("p").click({param1 : "Hello", param2 : "World"}, someFunction);
function someFunction(event){
 alert(event.data.param1);
 alert(event.data.param2);
}

可見,通過event.data可以獲取匿名對象的鍵。

通過Event對象實(shí)例,還可以拿到其它方面的信息,比如:

$("p").click(function(event){
 alert(event.target.nodeName);
})

以上,通過event.target.nodeName獲取觸發(fā)事件的元素名稱。

jQuery.Event的其它屬性包括:

altKey 如果alt鍵按下就為true,在Mac鍵盤中alt鍵標(biāo)記為Option
ctrKey ctrl鍵被按下
shiftKey Shift鍵被按下
currentTarget 冒泡階段的當(dāng)前元素
data
metaKey 一般Meta鍵是Ctrl,而Mac上是Command鍵
pageX 鼠標(biāo)事件時(shí)光標(biāo)相對于頁面原點(diǎn)的水平坐標(biāo)
pageY 鼠標(biāo)事件時(shí)光標(biāo)相對于頁面原點(diǎn)的垂直坐標(biāo)
relatedTarget 觸發(fā)鼠標(biāo)事件時(shí)光標(biāo)離開或進(jìn)入的元素
screenX 鼠標(biāo)事件時(shí)光標(biāo)相對于屏幕原點(diǎn)的水平坐標(biāo)
screenY 鼠標(biāo)事件時(shí)光標(biāo)相對于屏幕原點(diǎn)的垂直坐標(biāo)
result 從前面的事件處理器返回最近非undefined的值
target 觸發(fā)事件的元素
timestamp jQuery.Event創(chuàng)建實(shí)例時(shí)的時(shí)間戳,以毫秒為單位
type 事件類型,比如click
which 如果是鍵盤事件,代表按鍵的數(shù)字,如果是鼠標(biāo)事件,記錄按下的是左鍵、中鍵或右鍵

8.Event方法

event.preventDefault()阻止默認(rèn)行為
event.stopPropgation()停止"冒泡",即停止沿著DOM向上進(jìn)一步傳播
event.stopImmediatePropagation()停止所有事件的進(jìn)一步傳播
event.isDefaultPrevented()
event.isPropgationStopped()
isImmediatePropgagationStopped()

9.live方法和on方法

該方法允許我們?yōu)檫€不存在的元素創(chuàng)建事件。與bind方法不同的是:能為所有匹配的元素綁定事件,設(shè)置是那些暫時(shí)還不存在、需要?jiǎng)討B(tài)創(chuàng)建的元素。而且,live方法不一定要放在$(function(){})就緒處理器中。到了 jQuery 1.7以后,就改為on方法了。

$("p").on("click", function(){
 alert("hello");
})

如果想取消注冊事件:

$("button").click(function(){
 $("p").off("click");
})

10.trigger方法

當(dāng)我們想手動觸發(fā)元素綁定的事件時(shí)可以使用trigger方法。

$("#foo").on("click",function(){
 alert($(this).text());
})
$("#foo").trigger("click");

還可以在綁定事件的時(shí)候出傳入形參,在trigger事件的時(shí)候傳入實(shí)參。

$("#foo").on("custom", function(event, param1, param2){
 alert(param1 + "\n" + param2)
})
$("#foo").trigger("custom",["Custom","Event"]);

trigger觸發(fā)由jQuery.Event創(chuàng)建的實(shí)例:

var event = jQuery.Event("logged");
event.user = "foo";
event.pass = "bar";
$("body").trigger(event);

甚至可以在trigger觸發(fā)方法的時(shí)候傳入匿名對象:

$("body").trigger({
 type: "logged",
 user: "foo",
 pass: "bar"
});

如果想停止觸發(fā)事件的傳播,可通過jQuery.Event實(shí)例的stopPropgation()方法,或在任何事件中返回false。

11.triggerHandler方法

triggerHandler方法與trigger方法的不同之處在于:triggerHandler方法不會執(zhí)行元素的默認(rèn)事件,也不會"冒泡"。

//給一個(gè)元素綁定一個(gè)focus事件
$("input").focus(function(){
 $("<span>Focused</span>").appendTo("#id").fadeOut(1000);
})
//用triggerHandler觸發(fā)
$("#id").click(function(){
 $("input").triggerHandler("focus");//不會觸發(fā)focus的默認(rèn)行為,即進(jìn)入文本框
})
//用trigger觸發(fā)
$("#id").click(function(){
 $("input").trigger("focus");//同時(shí)觸發(fā)foucs的默認(rèn)行為和綁定行為
})

12.事件冒泡和事件委托

什么是事件冒泡?

有這么一段代碼。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
 <div>
  <p><a href="#foo"><span>I am a Link!</span></a></p>
  <p><a href="#bar"><b><i>I am another Link!</i></b></a></p>
 </div>
</body>
</html>

現(xiàn)在,給該頁面所有的元素綁定click事件,包括window和document。

  $(function () {
   $('*').add([document, window]).on('click', function(event) {
    event.preventDefault();
    console.log(this);
   });
  });

當(dāng)單擊頁面任何元素,單擊事件會從當(dāng)前元素開始,向上一級元素傳播,直到最頂級元素,這里是window。

如何阻止事件冒泡?

顯然,通常只希望在某個(gè)特定元素發(fā)生特定的事件,不希望事件冒泡的發(fā)生。這時(shí)候我們可以針對某個(gè)特定元素綁定事件。

  $(function () {
   $('a').on('click', function(event) {
    event.preventDefault();
    console.log($(this).attr('href'));
   });
  });

以上,只為a綁定了click事件,無它。

如何有效利用事件冒泡?

在jquery中,事件委托卻很好地利用了事件冒泡。

<html>
<body>
<div id="container">
 <ul id="list">
  <li><a >Item #1</a></li>
  <li><a href="/local/path/1">Item #2</a></li>
  <li><a href="/local/path/2">Item #3</a></li>
  <li><a >Item #4</a></li>
 </ul>
</div>
</body>
</html>

現(xiàn)在,我們想給現(xiàn)有l(wèi)i中的a標(biāo)簽綁定事件,這樣寫:

$( "#list a" ).on( "click", function( event ) {
 event.preventDefault();
 console.log( $( this ).text() );
});

但是,如果又在現(xiàn)有的ul中添加新的li和a,那情況又如何呢?

$( "#list" ).append( "<li><a >Item #5</a></li>" );

結(jié)果,點(diǎn)擊新添加的li中的a,什么都沒有發(fā)生。那么,如何為動態(tài)添加的元素綁定事件呢?

如果我們能把事件綁定到a的父級元素,那在父級元素內(nèi)生成的子級動態(tài)元素,也會有綁定事件的行為。

$( "#list" ).on( "click", "a", function( event ) {
 event.preventDefault();
 console.log( $( this ).text() );
});

以上,我們把click事件綁定到a的父級元素id為list的ul上,on方法中的第二個(gè)參數(shù),這里是a,是事件真正的執(zhí)行者。具體過程如下:
→點(diǎn)擊某個(gè)a標(biāo)簽
→根據(jù)事件冒泡,觸發(fā)了a的父級元素ul的click事件
→而事件真正的執(zhí)行者是a

事件委托允許我們把事件綁定到父級元素,這相當(dāng)于給所有的子級元素綁定了事件,不管這個(gè)子級元素是靜態(tài)的、還是動態(tài)添加的。

13.toggle方法

允許我們依次執(zhí)行多個(gè)事件,當(dāng)執(zhí)行完最后一個(gè)事件后,再執(zhí)行第一個(gè)事件。

$('img[src*=small]').toggle({
 function(){},
 function(){},
 function(){}
});

14.mouseenter和mouseleave方法

$(element).mouseenter(function(){}).mouseleave(function(){})

15.hover方法

$("p").hover(function(){
 $("p").css("background-color","yellow");
 },function(){
 $("p").css("background-color","pink");
});

相信本文所述對大家的jQuery程序設(shè)計(jì)有一定的借鑒價(jià)值。

相關(guān)文章

  • jQuery實(shí)現(xiàn)的數(shù)值范圍range2dslider選取插件特效多款代碼分享

    jQuery實(shí)現(xiàn)的數(shù)值范圍range2dslider選取插件特效多款代碼分享

    這篇文章主要介紹了jQuery實(shí)現(xiàn)的數(shù)值范圍range2dslider選取插件特效,整體特效非常逼真自然,推薦給大家,有需要的小伙伴可以參考下
    2015-08-08
  • IE6下opacity與JQuery的奇妙結(jié)合

    IE6下opacity與JQuery的奇妙結(jié)合

    在群里看見有人貼出一個(gè)頁面問opacity不支持IE6,有什么好的支持方法沒。貼出第一眼就發(fā)現(xiàn)用了jq庫,當(dāng)場就想到了支持的。 但很多人回答用CSS濾鏡,當(dāng)我看到這個(gè)答案的時(shí)候。有些很吃驚。難道大家都不知道JQ是支持opacity兼容IE6+的嗎? 開始他們都不相信。JQ怎么配合使用。于是就寫了一個(gè)簡單的代碼給他們。
    2013-03-03
  • jQuery.clean使用方法及思路分析

    jQuery.clean使用方法及思路分析

    jQuery.clean源碼分析包括:jQuery.clean使用方法、思路分析及源碼注釋分析感興趣的朋友可以參考下
    2013-01-01
  • jquery寫個(gè)checkbox——類似郵箱全選功能

    jquery寫個(gè)checkbox——類似郵箱全選功能

    最近在學(xué)習(xí)jquery,今天抽空用jquery寫個(gè)checkbox——類似郵箱全選功能,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • jQuery常用的4種加載方式分析

    jQuery常用的4種加載方式分析

    這篇文章主要介紹了jQuery常用的4種加載方式,結(jié)合實(shí)例形式分析了jQuery在頁面加載之前與加載之后執(zhí)行的4種常用加載方式,需要的朋友可以參考下
    2016-07-07
  • jQuery.form.js插件不能解決連接超時(shí)(timeout)的原因分析及解決方法

    jQuery.form.js插件不能解決連接超時(shí)(timeout)的原因分析及解決方法

    jQuery.form.js是一個(gè)form插件,支持ajax表單提交和ajax文件上傳。最近在使用jquery.form.js提交包含文件的表單時(shí),當(dāng)碰上網(wǎng)速較慢時(shí),而我們又設(shè)置了timeout時(shí)我們的頁面會死在這里,怎么回事呢,下面腳本之家小編給大家解答下
    2016-10-10
  • jqPlot jquery的頁面圖表繪制工具

    jqPlot jquery的頁面圖表繪制工具

    可能是個(gè)人認(rèn)識能力有限,一直認(rèn)為僅僅靠html是很難展現(xiàn)稍具動態(tài)的圖表的,但是在看到j(luò)qPlot之后,我的認(rèn)識有了很大改變,jqplpt——基于HTML的圖表展示插件,而且不生成圖片,最可貴的是能生成類似flex的數(shù)據(jù)動態(tài)提示以及動態(tài)改變數(shù)據(jù)展示范圍等等。
    2009-07-07
  • jQuery中的deferred使用方法

    jQuery中的deferred使用方法

    deferred對象是jQuery的回調(diào)函數(shù)解決方案,jQuery之前的版本中異步回調(diào)這塊做的不是很好,所以后期補(bǔ)上了該解決方案。接下來通過本文給大家介紹jQuery中的derferred使用方法,非常不錯(cuò),需要的朋友參考下
    2017-03-03
  • jquery怎樣實(shí)現(xiàn)ajax聯(lián)動框(二)

    jquery怎樣實(shí)現(xiàn)ajax聯(lián)動框(二)

    ajax聯(lián)動框想必大家早有所耳聞,接下來將介紹jquery實(shí)現(xiàn)另一種形式的聯(lián)動框,右邊的聯(lián)動框用jquery生成,仿照上篇的js方法修改的,感興趣的你可以參考下希望可以幫助到你
    2013-03-03
  • 分享兩款帶遮罩的jQuery彈出框

    分享兩款帶遮罩的jQuery彈出框

    這篇文章主要為大家分享了兩款帶遮罩的jQuery彈出框,jQuery遮罩層在現(xiàn)在的網(wǎng)站中十分常見,感興趣的小伙伴們可以參考一下
    2015-12-12

最新評論