11.58 事件
11.581 事件綁定方法與解綁
綁定事件:
// 綁定方式一: $('.box1').click( function () { alert( '綁定方式一' ) }); ? // 綁定方式二: $('.box1').on("click", function () { alert( '綁定方式一' ) }); ? // 綁定方式三: $('.box1').bind('click',{'a':'b'} function (e) { alert( '綁定方式二' ); console.log(e.data); }); ? $( '.box1').bind('mouseover mouseout', function () { // 綁定多個(gè)事件做同一件事 console.log('綁定多個(gè)事件做同一件事' ) }); $( '.box1' ).bind({ 'mouseup': function () { console.log( 'mouseover' ); }, 'mousedown': function () { console.log( 'mouseout' ); } });
解綁事件:
// 移除事件,unbind沒(méi)有參數(shù)則代表移除所有事件 setTimeout( function () { $( '.box1').unbind('mouseover' ); }, 3000 ); ? setTimeout( function () { $( '.box1' ).unbind(); }, 10000 ) ? .off( "click", function (){ xxxxx })
11.582 綁定事件示例
點(diǎn)擊事件:click
// click與dblclick只應(yīng)該存在一個(gè),大多數(shù)都是單擊事件 $('.box1').click( function (event) // console.log(event.type); // event.type事件的類型為:click console.log(event.target); // event.target指的是點(diǎn)擊的那個(gè)元素 }) $( '.box1').dblclick( function (event) { console.log(event.target); // event.target指的是點(diǎn)擊的那個(gè)元素 })
鼠標(biāo):mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave
$('.box1').mousedown( function (event) { console.log( '按照鼠標(biāo)左鍵不松手' ); }); $( '.box1').mouseup( function (event) { console.log( '按照鼠標(biāo)左鍵松手' ); }); ? $( '.box1').mousemove( function (event) { console.log( '移動(dòng)鼠標(biāo)' , event.pageX, event.pageY); }); $( '.box1').mouseover( function (event) { console.log( '元素以及該元素的子元素在鼠標(biāo)移入時(shí)都會(huì)觸發(fā),當(dāng)前的div是:' , event.target.innerText); }); ? $( '.box1').mouseout( function (event) { console.log( '元素以及該元素的子元素在鼠標(biāo)離開(kāi)時(shí)都會(huì)觸發(fā),當(dāng)前的div是:' , event.target.innerText); }); $( '.box1').mouseenter( function (event) { console.log( '元素以在鼠標(biāo)移入時(shí)都會(huì)觸發(fā)(與子元素?zé)o關(guān)),當(dāng)前的div是:' , event.target.innerText); }); $( '.box1').mouseleave( function (event) { console.log( '元素以在鼠標(biāo)移入時(shí)都會(huì)觸發(fā)(與子元素?zé)o關(guān)),當(dāng)前的div是:' , event.target.innerText); });
對(duì)于input框:focus、blur、input
input能夠?qū)崟r(shí)檢測(cè) textarea , input:text , input:password , input:search 這幾個(gè)元素的內(nèi)容變化,但I(xiàn)E9以下版本不支持,需要使用IE特有的onpropertychange事件替代,使用jQuery庫(kù)的話直接使用on同時(shí)綁定這兩個(gè)事件即可
$('#inp').on("focus", function () { console.log( '鼠標(biāo)聚焦' ); }); $( '#inp').on("blur", function () { console.log( '鼠標(biāo)失去焦點(diǎn)' ); }); // 當(dāng)input框的值發(fā)生變化時(shí),實(shí)時(shí)觸發(fā) $("#inp").on("input", function () { console.log($( this ).val()); }) $( "#i1").on("input propertychange", function () { alert($( this ).val()); })
按鍵:keydown、keyup
$('#inp').keydown( function (e) { console.log(e.keyCode); }); $(window).on( "keydown", function (e) { // 獲取用戶按下那個(gè)按鍵 console.log(e.keyCode); if (e.keyCode === 16 ){ flag = true ; } }); ? $( '#inp').keyup( function (event) { // 綁定一個(gè)按鍵抬起的事件 console.log('鍵盤按鍵彈起' ); }); $(window).on( "keyup", function (e) { console.log(e.keyCode); if (e.keyCode === 16 ){ flag = false ; } });
change:
// 表單事件change $('#inp').change( function () { console.log( this .value); // 失去焦點(diǎn)時(shí)就會(huì)得到值 }); $( 'input[name=sex]').change( function (event) { console.log( this .value); }); $( '#select').change( function () { console.log( this .value); });
選中checkbox框:select
// 表單事件select,CheckBox框被選中時(shí)觸發(fā) $('#inp1').select( function () { console.log( this .value); }); $( '#inp2').select( function () { console.log( this .value); });
提交事件:submit
// 表單事件submit $('#form').submit( function (event) { console.log($( 'input[name=user]' ).val()); console.log($( 'input[name=pwd]' ).val()); event.preventDefault(); });
hover:不能使用on綁定hover事件
// hover事件 $(".father").hover( // 鼠標(biāo)移到.father上時(shí)讓.son添加一個(gè).show function () { $( this ).find(".son").addClass("show" ); }, function () { // 鼠標(biāo)移出.father上時(shí)讓.son移除一個(gè).show $( this ).find(".son").removeClass("show" ); })
11.583 事件冒泡應(yīng)用之事件委托
添加的事件不能用于動(dòng)態(tài)增加事件,例如之前我們?cè)谧霰砀竦脑鰟h改時(shí),每新增一行內(nèi)容都需要重新綁定事件,基于事件委托就可以解決該問(wèn)題
事件委托是通過(guò)事件冒泡的原理,利用父標(biāo)簽去捕獲子標(biāo)簽的事件
$('ul').on('mouseover','li', function (e) { $(e.target).css( 'background-color','#ddd').siblings().css('background-color','white' ); // e.stopPropagation(); return false ; }) ? $( "table").on("click", ".delete", function () { // 刪除按鈕綁定的事件 })
11.584 頁(yè)面加載完成執(zhí)行
$(document).ready( function (){ 在這里寫你的JS代碼... }) ? 簡(jiǎn)寫: $( function (){ 你在這里寫你的代碼 })
與window.onload()函數(shù)的區(qū)別:window.onload()函數(shù)有覆蓋現(xiàn)象,必須等待著圖片資源加載完成之后才能調(diào)用,且只能使用一次;jQuery的這個(gè)入口函數(shù)沒(méi)有函數(shù)覆蓋現(xiàn)象,文檔加載完成之后就可以調(diào)用(建議使用此函數(shù)),可以使用多次
11.59 動(dòng)畫效果
1 、show() 顯示隱藏的匹配元素 語(yǔ)法:show(speed,callback) 參數(shù): speed:三種預(yù)定速度之一的字符串( 'slow','normal','fast')或表示動(dòng)畫時(shí)長(zhǎng)的毫秒值(如:1000毫秒== 1秒) callback:在動(dòng)畫完成時(shí)執(zhí)行的函數(shù),每個(gè)元素執(zhí)行一次 2 、hide hide(speed,callback)跟show使用方法類似,表示隱藏顯示的元素。可以通過(guò)show()和hide()方法,來(lái)動(dòng)態(tài)控制元素的顯示隱藏 3 、toggle 如果元素是可見(jiàn)的,切換為隱藏的;如果元素是隱藏的,切換為可見(jiàn)的。 ? 1 、slideDown 通過(guò)高度變化(向下增大)來(lái)到動(dòng)態(tài)地顯示所有匹配的元素,在顯示完成后觸發(fā)一個(gè)回調(diào)函數(shù)用法和參數(shù)跟上面類似 2 、slideUp 通過(guò)高度變化(向上減小)來(lái)動(dòng)態(tài)地隱藏所有匹配的元素,在隱藏完成后可選地觸發(fā)一個(gè)回調(diào)函數(shù)。用法和參數(shù)跟上面類似 3 、slideToggle 通過(guò)高度變化來(lái)切換所有匹配元素的可見(jiàn)性,并在切換完成后可選地觸發(fā)一個(gè)回調(diào)函數(shù)跟toggle用法類似 ? 1、fadeIn/fadeOut 通過(guò)不透明度的變化來(lái)實(shí)現(xiàn)所有匹配元素的淡入/ 淡出效果,并在動(dòng)畫完成后可選地觸發(fā)一個(gè)回調(diào)函數(shù)。這個(gè)動(dòng)畫只調(diào)整元素的不透明度,也就是說(shuō)所有匹配的元素的高度和寬度不會(huì)發(fā)生變化 2 、fadeTo 把所有匹配元素的不透明度以漸進(jìn)方式調(diào)整到指定的不透明度,并在動(dòng)畫完成后可選地觸發(fā)一個(gè)回調(diào)函數(shù)。這個(gè)動(dòng)畫只調(diào)整元素的不透明度,也就是說(shuō)所有匹配的元素的高度和寬度不會(huì)發(fā)生變化。 3、fadeToggle 通過(guò)不透明度的變化來(lái)開(kāi)關(guān)所有匹配元素的淡入和淡出效果,并在動(dòng)畫完成后可選地觸發(fā)一個(gè)回調(diào)函數(shù),這個(gè)動(dòng)畫只調(diào)整元素的不透明度,也就是說(shuō)所有匹配的元素的高度和寬度不會(huì)發(fā)生變化。實(shí)現(xiàn)淡入淡出的效果就是使用此方
animate、stop、delay
1 、animate 概念:用于創(chuàng)建自定義動(dòng)畫的函數(shù) 語(yǔ)法:animate(params,[speed],[fn]) 參數(shù): params:一組包含作為動(dòng)畫屬性和終值的樣式屬性和及其值的集合 speed:三種預(yù)定速度之一的字符串( "slow","normal", or "fast")或表示動(dòng)畫時(shí)長(zhǎng)的毫秒數(shù)值(如:1000 ) fn:在動(dòng)畫完成時(shí)執(zhí)行的函數(shù),每個(gè)元素執(zhí)行一次。 ? 2 、stop 概念:停止所有在指定元素上正在運(yùn)行的動(dòng)畫 語(yǔ)法:stop([clearQueue],[jumpToEnd]) 參數(shù): clearQueue:如果設(shè)置成true,則清空隊(duì)列。可以立即結(jié)束動(dòng)畫。 gotoEnd:讓當(dāng)前正在執(zhí)行的動(dòng)畫立即完成,并且重設(shè)show和hide的原始樣式,調(diào)用回調(diào)函數(shù)等 ? 3、delay 概念:用來(lái)做延遲的操作 語(yǔ)法:delay(1000),一秒之后做后面的操作
11.510 .each()
// 為每一個(gè)li標(biāo)簽添加class="c1" $("li").each( function (){ $( this ).addClass("c1" ); }); ? // 使用內(nèi)置$.each()進(jìn)行迭代 var arry=[11,22,33,44 ]; $.each(arry, function (k,v){ console.log(k,v); });
注意: jQuery的方法返回一個(gè)jQuery對(duì)象,遍歷jQuery集合中的元素 - 被稱為隱式迭代的過(guò)程。當(dāng)這種情況發(fā)生時(shí),它通常不需要顯式地循環(huán)的 .each()方法
也就是說(shuō),上面的例子沒(méi)有必要使用each()方法,直接像下面這樣寫就可以了:
$("li").addClass("c1"); // 對(duì)所有標(biāo)簽做統(tǒng)一操作
終止each循環(huán)
return false ;
11.511 .data()
.data(key, value): 在匹配的元素上存儲(chǔ)任意相關(guān)數(shù)據(jù)/保存一些狀態(tài)。
$("div").data("k",100); // 給所有div標(biāo)簽都保存一個(gè)名為k,值為100
.data(key): 返回匹配的元素集合中的第一個(gè)元素的給定名稱的數(shù)據(jù)存儲(chǔ)的值
$("div").data("k"); // 返回第一個(gè)div標(biāo)簽中保存的"k"的值 100
.removeData(key): 移除存放在元素上的數(shù)據(jù),不加key參數(shù)表示移除所有保存的數(shù)據(jù)
$("div").removeData("k"); // 移除元素上存放k對(duì)應(yīng)的數(shù)據(jù)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
