-
keypress()事件 在input元素上綁定keydown事件會發(fā)現(xiàn)一個問題: 每次獲取的內(nèi)容都是之前輸入的,當(dāng)前輸入的獲取不到 keydown事件觸發(fā)在文字還沒敲進文本框,這時如果在keydown事件中輸出文本框中的文本,得到的是觸發(fā)鍵盤事件前的文本,而keyup事件觸發(fā)時整個鍵盤事件的操作已經(jīng)完成,獲得的是觸發(fā)鍵盤事件后的文本 當(dāng)瀏覽器捕獲鍵盤輸入時,還提供了一個keypress的響應(yīng),這個跟keydown是非常相似,這里使用請參考keydown這一節(jié),具體說說不同點 keypress事件與keydown和keyup的主要區(qū)別 對中文輸入法支持不好,無法響應(yīng)中文輸入 無法響應(yīng)系統(tǒng)功能鍵(如delete,backspace) 由于前面兩個限制,keyCode與keydown和keyup不是很一致 總而言之, KeyPress主要用來接收字母、數(shù)字等ANSI字符,而 KeyDown 和 KeyUP 事件過程可以處理任何不被 KeyPress 識別的擊鍵。諸如:功能鍵(F1-F12)、編輯鍵、定位鍵以及任何這些鍵和鍵盤換檔鍵的組合等。查看全部
-
keydown()與keyup()事件 鼠標(biāo)有mousedown,mouseup之類的事件,這是根據(jù)人的手勢動作分解的2個觸發(fā)行為。相對應(yīng)的鍵盤也有這類事件,將用戶行為分解成2個動作,鍵盤按下與松手,針對這樣的2種動作,jQuery分別提供了對應(yīng)keydown與keyup方法來監(jiān)聽 keydown事件: 當(dāng)用戶在一個元素上第一次按下鍵盤上字母鍵的時候,就會觸發(fā)它。使用上非常簡單,與基本事件參數(shù)處理保持一致,這里使用不在重復(fù)了,列出使用的方法 //直接綁定事件 $elem.keydown( handler(eventObject) ) //傳遞參數(shù) $elem.keydown( [eventData ], handler(eventObject) ) //手動觸發(fā)已綁定的事件 $elem.keydown() keyup事件: 當(dāng)用戶在一個元素上第一次松手鍵盤上的鍵的時候,就會觸發(fā)它。使用方法與keydown是一致的只是觸發(fā)的條件是方法的 注意: keydown是在鍵盤按下就會觸發(fā) keyup是在鍵盤松手就會觸發(fā) 理論上它可以綁定到任何元素,但keydown/keyup事件只是發(fā)送到具有焦點的元素上,不同的瀏覽器中,可獲得焦點的元素略有不同,但是表單元素總是能獲取焦點,所以對于此事件類型表單元素是最合適的。查看全部
-
submit事件 提交表單是一個最常見的業(yè)務(wù)需求,比如用戶注冊,一些信息的輸入都是需要表單的提交。同樣的有時候開發(fā)者需要在表單提交的時候過濾一些的數(shù)據(jù)、做一些必要的操作(例如:驗證表單輸入的正確性,如果錯誤就阻止提交,從新輸入)此時可以通過submit事件,監(jiān)聽下提交表單的這個動作 使用上非常簡單,與基本事件參數(shù)處理保持一致 方法一:$ele.submit() 綁定$ele元素,不帶任何參數(shù)一般是用來指定觸發(fā)一個事件,用的比較少 <div id="test">點擊觸發(fā)<div> $("ele").submit(function(){ alert('觸發(fā)指定事件') }) $("#text").click(function(){ $("ele").submit() //指定觸發(fā)事件 }); 通過在<form>元素上綁定submit事件,開發(fā)者可以監(jiān)聽到用戶的提交表單的的行為 具體能觸發(fā)submit事件的行為: <input type="submit"> <input type="image"> <button type="submit"> 當(dāng)某些表單元素獲取焦點時,敲擊Enter(回車鍵) 上述這些操作下,都可以截獲submit事件。 這里需要特別注意: form元素是有默認(rèn)提交表單的行為,如果通過submit處理的話,需要禁止瀏覽器的這個默認(rèn)行為 傳統(tǒng)的方式是調(diào)用事件對象 e.preventDefault() 來處理, jQuery中可以直接在函數(shù)中最后結(jié)尾return false即可 jQuery處理如下: $("#target").submit(function(data) { return false; //阻止默認(rèn)行為,提交表單 });查看全部
-
js中事件是會冒泡的,所以this是可以變化的,但event.target不會變化,它永遠是直接接受事件的目標(biāo)DOM元素;查看全部
-
a();-->調(diào)用 function a()函數(shù) , $("input)選出所有input標(biāo)簽的集合,$("input:last")就是從input標(biāo)簽集合中取出最后一個便簽,focusin()獲得焦點事件,$("input:last").focusin('慕課網(wǎng)', fn)意為 給input標(biāo)簽集合中最后的一個input便簽設(shè)置獲得焦點事件,參數(shù)為 ‘慕課網(wǎng)‘ fn是回調(diào)函數(shù) 即是function fn(e)函數(shù),this是觸發(fā)事件目標(biāo)(在這里也就是是前面取得的最后input標(biāo)簽), $(this)把DOM的this對象轉(zhuǎn)化為JQuery的對象, $(this).val( e.data) 是對觸發(fā)事件對象設(shè)置值,值e.data 就是前面參數(shù) '慕課網(wǎng)' 。<br> 其實<br> function a() {<br> $("input:last").focusin('慕課網(wǎng)', fn)<br> }<br> 等價<br> function a() {<br> $("input:last").focusin('慕課網(wǎng)',function fn(e) { <br> $(this).val(e.data) }) val() 方法返回或設(shè)置被選元素的值。 元素的值是通過 value 屬性設(shè)置的。該方法大多用于 input 元素。 如果該方法未設(shè)置參數(shù),則返回被選元素的當(dāng)前值。查看全部
-
先搞清楚e.target是指哪個元素,e.target.value獲取的就是你選擇接受事件的元素輸入的或者選擇的值查看全部
-
select事件 當(dāng) textarea 或文本類型的 input 元素中的文本被選擇時,會發(fā)生 select 事件。 這個函數(shù)會調(diào)用執(zhí)行綁定到select事件的所有函數(shù),包括瀏覽器的默認(rèn)行為??梢酝ㄟ^在某個綁定的函數(shù)中返回false來防止觸發(fā)瀏覽器的默認(rèn)行為。 select事件只能用于<input>元素與<textarea>元素 使用上非常簡單: 方法一:.select() 觸發(fā)元素的select事件: $("input").select(); 方法二:$ele.select( handler(eventObject) ) 綁定$ele元素,每次$ele元素觸發(fā)點擊操作會執(zhí)行回調(diào) handler函數(shù) 這樣可以針對事件的反饋做很多操作了 <input id="test" value="文字選中"></input> $("#text").select(function() { //響應(yīng)文字選中回調(diào) //this指向 input元素 }); 方法三:$ele.select( [eventData ], handler(eventObject) ) 使用與方法二一致,不過可以接受一個數(shù)據(jù)參數(shù),這樣的處理是為了解決不同作用域下數(shù)據(jù)傳遞的問題 <input id="test" value="文字選中"></input> $("#text").select(11111,function(e) {//響應(yīng)文字選中回調(diào) //this指向 div元素 //e.date => 11111 傳遞數(shù)據(jù) });查看全部
-
change事件 <input>元素,<textarea>和<select>元素都是可以選擇值一些改變,開發(fā)者可以通過change事件去監(jiān)聽這些改變的動作 input元素 監(jiān)聽value值的變化,當(dāng)有改變時,失去焦點后觸發(fā)change事件 select元素 對于下拉選擇框,復(fù)選框和單選按鈕,當(dāng)用戶用鼠標(biāo)作出選擇,該事件立即觸發(fā) textarea元素 多行文本輸入框,當(dāng)用戶用鼠標(biāo)點擊時,該事件立即觸發(fā)查看全部
-
blur、focus事件在元素本身產(chǎn)生,不支持冒泡;focusin、focusout事件支持冒泡。并要注意不是所有元素都能夠接收焦點的.能夠響應(yīng)用戶操作的元素才有焦點查看全部
-
blur與foucus事件 在之前2.8與2.9節(jié)我們學(xué)過了表單處理事件focusin事件與focusout事件,同樣用于處理表單焦點的事件還有blur與focus事件 它們之間的本質(zhì)區(qū)別: 是否支持冒泡處理 舉個簡單的例子 <div> <input type="text" /> </div> 其中input元素可以觸發(fā)focus()事件 div是input的父元素,當(dāng)它包含的元素input觸發(fā)了focus事件時,它就產(chǎn)生了focusin()事件。 focus()在元素本身產(chǎn)生,focusin()在元素包含的元素中產(chǎn)生 blur與focusout也亦是如此查看全部
-
focusout事件 當(dāng)一個元素,或者其內(nèi)部任何一個元素失去焦點的時候,比如input元素,用戶在點擊失去焦的時候,如果開發(fā)者需要捕獲這個動作,jQuery提供了一個focusout事件 使用上非常簡單: 方法一:$ele.focusout() 綁定$ele元素,不帶任何參數(shù)一般是用來指定觸發(fā)一個事件,可能一般用的比較少 <div id="test">點擊觸發(fā)<div> $("ele").focusout(function(){ alert('觸發(fā)指定事件') }) $("#text").mouseup(function(){ $("ele").focusout() //指定觸發(fā)事件 }); 方法二:$ele.focusout( handler ) 綁定$ele元素,每次$ele元素觸發(fā)點擊操作會執(zhí)行回調(diào) handler函數(shù) 這樣可以針對事件的反饋做很多操作了 <div id="test">點擊觸發(fā)<div> $("#text").focusout(function() { //this指向 div元素 }); 方法三:$ele.focusout( [eventData ], handler ) 使用與方法二一致,不過可以接受一個數(shù)據(jù)參數(shù),這樣的處理是為了解決不同作用域下數(shù)據(jù)傳遞的問題 <div id="test">點擊觸發(fā)<div> $("#text").focusout(11111,function(e) { //this指向 div元素 //e.date => 11111 傳遞數(shù)據(jù) });查看全部
-
focusin事件 當(dāng)一個元素,或者其內(nèi)部任何一個元素獲得焦點的時候,例如:input元素,用戶在點擊聚焦的時候,如果開發(fā)者需要捕獲這個動作的時候,jQuery提供了一個focusin事件 使用上非常簡單: 方法一:$ele.focusin() 綁定$ele元素,不帶任何參數(shù)一般是用來指定觸發(fā)一個事件,一般用的比較少 <div id="test">點擊觸發(fā)<div> $("ele").focusin(function(){ alert('觸發(fā)指定事件') }) $("#text").mouseup(function(){ $("ele").focusin() //指定觸發(fā)事件 }); 方法二:$ele.focusin( handler ) 綁定$ele元素,每次$ele元素觸發(fā)點擊操作會執(zhí)行回調(diào) handler函數(shù) 這樣可以針對事件的反饋做很多操作了 <div id="test">點擊觸發(fā)<div> $("#text").focusin(function() { //this指向 div元素 }); 方法三:$ele.focusin( [eventData ], handler ) 使用與方法二一致,不過可以接受一個數(shù)據(jù)參數(shù),這樣的處理是為了解決不同作用域下數(shù)據(jù)傳遞的問題 <div id="test">點擊觸發(fā)<div> $("#text").focusin(11111,function(e) { //this指向 div元素 //e.date => 11111 傳遞數(shù)據(jù) });查看全部
-
hover事件 學(xué)了mouseover、mouseout、mouseenter、mouseleave事件,也理解了四個事件的相同點與不同點,現(xiàn)在可以用來給元素做一個簡單的切換效果 在元素上移進移出切換其換色,一般通過2個事件配合就可以達到,這里用mouseenter與mouseleave,這樣可以避免冒泡問題 $(ele).mouseenter(function(){ $(this).css("background", '#bbffaa'); }) $(ele).mouseleave(function(){ $(this).css("background", 'red'); }) 這樣目的是達到了,代碼稍微有點多,對于這樣的簡單邏輯jQuery直接提供了一個hover方法,可以便捷處理 只需要在hover方法中傳遞2個回調(diào)函數(shù)就可以了,不需要顯示的綁定2個事件 $(selector).hover(handlerIn, handlerOut) handlerIn(eventObject):當(dāng)鼠標(biāo)指針進入元素時觸發(fā)執(zhí)行的事件函數(shù) handlerOut(eventObject):當(dāng)鼠標(biāo)指針離開元素時觸發(fā)執(zhí)行的事件函數(shù)查看全部
-
mouseenter與mouseleave事件 用交互操作中,經(jīng)常需要知道用戶操作鼠標(biāo)是否有移到元素內(nèi)部或是元素外部,因此jQuery提供了一個mouseenter和mouseleave的快捷方法可以監(jiān)聽用戶移動到內(nèi)部的操作 使用上非常簡單,三種參數(shù)傳遞方式與mouseover和mouseout是一模一樣的,所以這里不再重復(fù),主要講講區(qū)別,下面以mouseenter為例: mouseenter JavaScript事件是Internet Explorer專有的。由于該事件在平時很有用,jQuery的模擬這一事件,以便它可用于所有瀏覽器。該事件在鼠標(biāo)移入到元素上時被觸發(fā)。任何HTML元素都可以接受此事件。 mouseenter事件和mouseover的區(qū)別 關(guān)鍵點就是:冒泡的方式處理問題 簡單的例子: mouseover為例: <div class="aaron2"> <p>鼠標(biāo)離開此區(qū)域觸發(fā)mouseleave事件</p> </div> 如果在p元素與div元素都綁定mouseover事件,鼠標(biāo)在離開p元素,但是沒有離開div元素的時候,觸發(fā)的結(jié)果: p元素響應(yīng)事件 div元素響應(yīng)事件 這里的問題是div為什么會被觸發(fā)? 原因就是事件冒泡的問題,p元素觸發(fā)了mouseover,他會一直往上找父元素上的mouseover事件,如果有全觸發(fā)了 所以在這種情況下面,jQuery推薦我們使用 mouseenter事件 mouseenter事件只會在綁定它的元素上被調(diào)用,而不會在后代節(jié)點上被觸發(fā)查看全部
-
mouseover與mouseout事件 在學(xué)JS的時候,大家還記得有兩個方法叫移入移出事件嗎?onmouseover()與onmouseout()事件~ jQuery當(dāng)中同樣提供了這樣的事件來監(jiān)聽用戶的移入移出操作,mouseover()與mouseout()事件,兩者用法類似,下面一mouseover為例: 方法一:$ele.mouseover() 綁定$ele元素,不帶任何參數(shù)一般是用來指定觸發(fā)一個事件,用的比較少 <div id="test">點擊觸發(fā)<div> $("ele").mouseover(function(){ alert('觸發(fā)指定事件') }) $("#text").click(function(){ $("ele").mouseover() //指定觸發(fā)事件 }); 方法二:$ele.mouseover( handler(eventObject) ) 綁定$ele元素,每次$ele元素觸發(fā)點擊操作會執(zhí)行回調(diào) handler函數(shù) 這樣可以針對事件的反饋做很多操作了 <div id="test">滑動觸發(fā)<div> $("#text").mouseover(function() { //this指向 div元素 }); 方法三:$ele.mouseover( [eventData ], handler(eventObject) ) 使用與方法二一致,不過可以接受一個數(shù)據(jù)參數(shù),這樣的處理是為了解決不同作用域下數(shù)據(jù)傳遞的問題 <div id="test">點擊觸發(fā)<div> $("#text").mouseover(11111,function(e) { //this指向 div元素 //e.date => 11111 傳遞數(shù)據(jù) });查看全部
舉報
0/150
提交
取消