-
在jquery中, html頁面的div的顯示和隱藏, 修改等的功能, 最終都要由 事件 觸發來引用, 不管是鍵盤事件, 還是鼠標事件...
-
mouseenter和mouseleave是成對對應的, mouseover & mouseout是對應的, mousedown和mouseup是對應的
-
沒有mousehover, 只有hover 事件函數, hover是模擬"懸停"的, 就是檢查是否在 "mouseenter 和 mouseleave " 之間切換的.., ** 可以認為 hover 等於 mouseenter + mouseleave.(會檢查 鼠標 是否 移出 對象..., 如果沒有移出對象, 就不觸發 fnOut.)
-
mousemove 要小心使用, 一般 不會使用...
下面是摘錄自己的 實驗結果記錄:
mousemove事件 是針對匹配元素的,也就說 只有在 匹配的元素這, 才會觸發mousemove事件。 因此,如果你要活得在頁面內(視窗內) 任意地方的 鼠標坐標, 就要選擇 $(document).mouseover(...).
而不是只在 某一個 div這綁定 mouseover..
用戶把鼠標移動一個像素,就會發生一次 mousemove 事件。處理所有 mousemove 事件會耗費系統資源。請謹慎使用該事件。 一般還是不要使用這個事件
鼠標偏移量, 基本上可以認為是 鼠標的坐標...(默認原點)
鼠標位置 表示方法, 通用的就是: ordinateX, ordinateY:
screenX, screenY, clientX, clientY, pageX, pageY.
(后面4種, 參照 瀏覽器 內容區域 的左上角, client會隨着滾動條而改變 總是相對於 “可見區域”, page總是相對於 文檔最開頭的位置, 不隨滾動條的改變而改變。“窗口坐標”和 “文檔坐標" 的區別!)
offsetX offsetY, 只是微軟的ie定義 的, 不是event的標准屬性, 也沒有廣泛支持?
event的clientX,pageX等屬性, 是針對所有的鼠標事件的 event都有的屬性, 所有的event 都有這樣的屬性, 不只是 mousemove。
over和out相對應, enter和leave相對應。。。
hover函數方法: hover是jquery事件 分類中的 "切換"小類中的函數, 另一個切換的方法是 toggle(), 跟效果中的toggle方法是一樣的...
在wrapper上加事件,當鼠標移動到wrapper上的時候讓class="point"的層放大。但如果用mouseover和mouseout事件的話,當鼠標移動到wrapper層后,point層會變大,但當鼠標在img和text層之間進行移動的時候,point層會變大變小,不停的變化。這並不是我們想要的結果,我們想要的是只要鼠標在wrapper層上,無論是img還是text上,point就變大,但在鼠標未移出wrapper層的情況下,point層不變小。
慢慢思路也清晰了,我們不用mouseover和mouseout而用hover問題就解決了。
hover: function( fnOver, fnOut ) { return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );}
也就是說hover!=mouseover+mouseout。但hover=mouseenter+mouseleave。
鏈式調用 和 分開調用的區別?
鏈式調用, 是在 對象的 一個方法 調用后 , 才開始 調用 后一個 方法, 兩個方法之間 是有先后 順序的, 而且, 后一個方法的調用 是在 前一個方法的基礎上, 進行的 , 所以 對於 "mouseenter, mouseleave" 事件的末尾一個 事件, 必定是 前面的那個 div 已經 顯示了 出來 的 基礎上的...
如果分開 調用, 就不能保證 mouseleave事件 執行時, div已經被 顯示 出來了. 就不能保證 div 已經可見, 從而去 獲取div的尺寸...
在 菜單類似 於下拉的 div的 情況下, 不能簡單 的 認為 觸發 div顯示的 span/li, 一旦 mouseleave后, div就 隱藏,因為這樣處理 , 會產生div的閃爍. (因為你如果設置成, 一旦從div中移出就隱藏,但是當你移出到 觸發元素中,div又要馬上 顯示, 這樣在快速的隱藏/顯示過程中, 就產生了閃爍.. .. 為了 解決 觸發元素 mouseleave后, 而鼠標 移到 div內部的情況, 這個時候, div還不能 馬上就 隱藏... 而且要 考慮: 從觸發元素移出 -> 到div中, 和 從 div中移出->但是進入到 觸發元素中, 為了避免閃爍, 這兩種情形, 都要判斷 鼠標的縱坐標位置 (因為橫坐標的位置, 不會產生 重疊 , 相互進入), 因此, 要判斷 鼠標的縱坐標位置 是在 兩者組合對象: (觸發元素+ div)的縱坐標組合 之外...時, 才能 隱藏 div.
**觸發元素的mouseleave要判斷縱坐標, div的mouseleave 也要判斷 縱坐標...
[[
關於hover函數的處理
匹配元素, 綁定hover事件, 有多種方法:
-
直接在hover的參數 函數function中 書寫事件處理代碼.
-
使用bind方法, 綁定 "mouseenter, mouseleave" 事件, 到指定到函數 處理 “名字”上
-
還是使用hover,只是后面的參數 是 一個 指定的 函數名字
這個函數名字, 通常使用 handlerInOut.
為什么要用這個 函數名? 因為 同樣的代碼 要在多個地方, 多次用到, 所以“遵循: 重復代碼 必然可以 重構 必然可以提取”的原則, 把這些同樣的, 重復的代碼, 提取到一個 函數中, 然后, 在事件處理中使用 這個公用的 提取的函數名。
]] 其實, 這個也是套路吧: 先在要顯示 "提示信息/ 操作結果信息提示" 的地方, 創建一個空的 div, 然后 在 js中 向這個div中追加提示信息: $("div-info").append("..." + msg + "...");
如下所示:
-
所有的事件,包括 鼠標事件, 鍵盤事件, 單擊事件, 都不用在前面加on, 這個是jquery..(在html中, 是onclick, onmouseenter, 而在 jquery中, 就是 click, mouseenter...)
-
幾乎所有的事件方法的參數, 都是 mouseX( [[data], fn] ), 即, 你可以使用一個空的 事件函數, 也可以帶 處理函數, 也可以向fn傳送處理數據的 事件 event.data的參數
-
用什么事件來觸發動作, 需要考量: 凡是顯示/隱藏的效果, 要用 其他元素來觸發,... , (因為當目標對象隱藏后, 對象可能 ? 就 無法選中了...) 凡是只是改變 元素的外觀, 如顏色, 背景, 邊框等, 不牽涉到元素的隱藏的, 可以由對象本身的 事件來觸發...
mouseenter事件和 mouseover事件, 從名字上都能 區分 他們的不同(可以用房間 來比喻: mouseenter, 相當於 進入房間, 那你只能在進入時, 觸發一次; 而mouseover, 在...之上, 就相當於, 你 坐在房間中的沙發上, 這時 你會觸發 沙發 的 mouseover 事件; 但同時, 這個沙發的 over事件 會冒泡, 你坐在沙發上, 那 你肯定也 算是 是在 房間的 over上面, 所以 也會觸發 父元素 "房間的" mouseover事件)::
對於包含子元素的 父元素, 如div>p>span來說, 對於 div來說, mouseenter事件只有一次, 即只有當鼠標 "從div 元素的邊界 邊線 外 第一次 進入元素 內部時, 才會觸發mouseenter 事件. 而對於 mouseover 事件, 當鼠標從 父元素進入子元素 / 從子元素移出到父元素, 這兩種情況 都會觸發 mouseover事件, 前者是由 子元素的over事件 冒泡產生的, 后者是父元素本身的 over事件...
你就想象 是 "房間" 和 "沙發"的 關系...
與之對應的一組事件是: mouseleave 和 mouseout: enter和leave相對應, over和 out相對應.
注意的是, mouseout 事件同樣會產生冒泡, 由div下的p, span等冒泡產生的out事件 也會觸發 div的 mouseout事件. 在 最后一次 鼠標離開 div的時候, 會同時產生 兩個事件: leave和out事件! (而且是div本身產生的)...
upan下的.Trash-0是什么?
-
是linux下的u盤 的回收站.
-
linux下的回收站, 是分布在 $HOME/.local/share/Trash下的, 里面有兩個文件夾, Files是存放被刪除文件的, Info是存放被刪除文件的信息的: *.trashinfo...
-
windows 的回收站是 分布在 每個分區下的 Recycle目錄下的...
-
而windows 的U盤是沒有回收站的, 所以刪除后, 就真的沒有了. 在windows中, 以點號開頭的文件, 不認為是 隱藏文件, 所以 linux下的U盤刪除文件信息.Trash-0 在 windows中 就被顯示出來了.
-
由於windows和linux處理文件 的方式 不同, 所以, 最好是規范 操作 upan中的文件, 否則, 在切換系統時, 會引起 文件的損壞, 甚至造成系統的藍屏...