分享兩個容易忽視的細節:
1.keydown事件第一次觸發很多人都知道觸發在前同步在后。這只是個猜測,我做了下測試:在回調函數后面添加代碼:console.log(1);return false。再次按下按鍵,console里打印了數據1,但是文本框沒有值輸入,說明keydown事件在游覽器默認行為之前觸發。所以大家的猜想是正確的。
2.關于長按按鍵,keydown事件會不斷觸發的解釋。這是W3C標準的規范,原始設計就是這樣。之所以這樣設計,有幾個考慮:1.為了復合鍵的操作需求,如ctrl+s。2.為了空格鍵,方向鍵等按鍵長按更具操作性的需求。要避免連續觸發可以keydown,keyup連用。
1.keydown事件第一次觸發很多人都知道觸發在前同步在后。這只是個猜測,我做了下測試:在回調函數后面添加代碼:console.log(1);return false。再次按下按鍵,console里打印了數據1,但是文本框沒有值輸入,說明keydown事件在游覽器默認行為之前觸發。所以大家的猜想是正確的。
2.關于長按按鍵,keydown事件會不斷觸發的解釋。這是W3C標準的規范,原始設計就是這樣。之所以這樣設計,有幾個考慮:1.為了復合鍵的操作需求,如ctrl+s。2.為了空格鍵,方向鍵等按鍵長按更具操作性的需求。要避免連續觸發可以keydown,keyup連用。
2018-03-21
已采納回答 / 阿阿阿布
$("input:last").focusin('慕課網', function fn(e) {? ? ? ? ? ? ?$(this).val(e.data)? ? ? ? ? ? });首先,因為$("ele").focusin('data','fn'),點擊文本框觸發焦點事件,'data'傳入了數據:“慕課網”儲存在focusin件事里面(也就是這里的e),后面的e.data就是讀取你傳入的數據:“慕課網”這3個中文。val()你應該理解吧,就是把data數據輸入到input文本框里。也就是為什么你點...
2018-03-21
事件冒泡 :當一個元素接收到事件的時候 會把他接收到的事件傳給自己的父級,一直到window 。(注意這里傳遞的僅僅是事件 并不傳遞所綁定的事件函數。所以如果父級沒有綁定事件函數,就算傳遞了事件 也不會有什么表現 但事件確實傳遞了。)
相信很多人學到這對冒泡事件會是一頭霧水。很多人吐槽老師語文不過關,教學方式奇特。一開始我是反對的,因為我都看得懂。(其實我主要都是自己研究老師寫的代碼和反復做實驗來感受代碼的特性,并沒多大咬文嚼字,學習文字傳遞的東西)但是到冒泡這邊就有點蒙了,比較抽象,很難通過實驗找出特性。網上無意間看到某大佬對冒泡件事的解釋,這才發現Aaron老師絕對是個地道的理科生?。?!
相信很多人學到這對冒泡事件會是一頭霧水。很多人吐槽老師語文不過關,教學方式奇特。一開始我是反對的,因為我都看得懂。(其實我主要都是自己研究老師寫的代碼和反復做實驗來感受代碼的特性,并沒多大咬文嚼字,學習文字傳遞的東西)但是到冒泡這邊就有點蒙了,比較抽象,很難通過實驗找出特性。網上無意間看到某大佬對冒泡件事的解釋,這才發現Aaron老師絕對是個地道的理科生?。?!
2018-03-20
$(".aaron1").mousemove(function(e) {
$(this).find('p:last').html('移動的X位置:' + (parseInt(e.pageX)-13)+'</br>'+'移動的Y位置:'+ (parseInt(e.pageY)-189))
})
測試二修改了一下,變成定位鼠標在div里面的X/Y坐標位置~
$(this).find('p:last').html('移動的X位置:' + (parseInt(e.pageX)-13)+'</br>'+'移動的Y位置:'+ (parseInt(e.pageY)-189))
})
測試二修改了一下,變成定位鼠標在div里面的X/Y坐標位置~
2018-03-19
$("li").on('click',function(){
alert('觸發的元素是內容是: ' + this.textContent)
})
我習慣用這種方法,冒泡有時候要搞混
alert('觸發的元素是內容是: ' + this.textContent)
})
我習慣用這種方法,冒泡有時候要搞混
2018-03-19
$('#elem').on('Aaron', function(event,arg1,arg2) {
alert("自觸自定義時間")
});
$('#elem').trigger('Aaron',['參數1','參數2'])
個人理解更像是在動態的給$('#elem')這個對象增加方法。
對象已經實例化后還可以再增加方法,這點不同于其他語言
alert("自觸自定義時間")
});
$('#elem').trigger('Aaron',['參數1','參數2'])
個人理解更像是在動態的給$('#elem')這個對象增加方法。
對象已經實例化后還可以再增加方法,這點不同于其他語言
2018-03-11
冒泡現象~感覺是底層沒有實現好造成的~
剛百度了一下谷歌瀏覽器的js引擎是C語言寫的,所以冒泡現象因該跟C的繼承原理有關
猜想js引擎里面父元素和子元素都是調用的基類指針,所以該指針會調用到父類的方法。
父元素、子元素統一調用基類指針可以省很多事情,大大提高效率,但是帶來了冒泡現象
如果js引擎用C++寫的估計能夠避免冒泡現象,因為C++具有多態性,而C沒有多態。
剛百度了一下谷歌瀏覽器的js引擎是C語言寫的,所以冒泡現象因該跟C的繼承原理有關
猜想js引擎里面父元素和子元素都是調用的基類指針,所以該指針會調用到父類的方法。
父元素、子元素統一調用基類指針可以省很多事情,大大提高效率,但是帶來了冒泡現象
如果js引擎用C++寫的估計能夠避免冒泡現象,因為C++具有多態性,而C沒有多態。
2018-03-09
bottonName=bottonName||'first' 剛開始沒接觸過這種類型的變量賦值??丛u論之后恍然大悟。
2018-03-07
不少人說:在這里keydown的行為是同步行為,事實上并非如此。在按下鍵盤按鍵后數值還沒有到達文本框而keydown事件已經觸發。故達到的值應是按鍵之前的屬性值。
2018-03-06
function data(e) { alert(e.data) }
function a() {$("button:eq(2)").click(1111, data) }a();
這段代碼會在加載到這里時,開始調用a()函數,為第三個button添加單擊事件,并為單擊事件的回調函數data()傳入一個參數‘1111’
‘1111’這個參數在傳入后,會被作為e的初始化值,生成JS事件對象e(event)。所以在data函數中,可以調用事件對象的方法 '.data'獲取該事件對象的數據。因為該事件對象e是a()函數里的‘1111’初始化的,所以e調用.data方法獲取到的數據也自然是‘1111’
function a() {$("button:eq(2)").click(1111, data) }a();
這段代碼會在加載到這里時,開始調用a()函數,為第三個button添加單擊事件,并為單擊事件的回調函數data()傳入一個參數‘1111’
‘1111’這個參數在傳入后,會被作為e的初始化值,生成JS事件對象e(event)。所以在data函數中,可以調用事件對象的方法 '.data'獲取該事件對象的數據。因為該事件對象e是a()函數里的‘1111’初始化的,所以e調用.data方法獲取到的數據也自然是‘1111’
2018-03-05
var i = 0;
$(".aaron1 p").mouseover(function(e) {
$(".aaron1 a:first").html('mouseover事件觸發次數:' + (++i))
})
var n = 0;
$(".aaron1").mouseover(function() {
$(".aaron1 a:last").html('mouseover冒泡事件觸發次數:' + (++n))
})
$(".aaron1 p").mouseover(function(e) {
$(".aaron1 a:first").html('mouseover事件觸發次數:' + (++i))
})
var n = 0;
$(".aaron1").mouseover(function() {
$(".aaron1 a:last").html('mouseover冒泡事件觸發次數:' + (++n))
})
2018-03-05
最新回答 / 慕桂英341702
等同于var n = 0;$(".right p:first").mouseover('data = 慕課網',function(e){? ? ? ? ? ? ? $(".right a").html('mouseover事件觸發次數:' + (++n) + '<br/> 傳入數據為 :'+ e.data)? ? ? ? ?})鼠標移動到class為div下面的第一個p上觸發的事件'data = 慕課網'為所傳參數
2018-03-05