摘要:有多個(gè),當(dāng)觸發(fā)了某個(gè)的事件后,馬上移入到下一個(gè)但是卻由于鼠標(biāo)移動(dòng)太快沒有觸發(fā)上一個(gè)的事件,此時(shí)上一個(gè)在中已經(jīng)被修改成了編輯狀態(tài),沒有觸發(fā)事件,該的狀態(tài)就不能恢復(fù)到非編輯狀態(tài)。
描述:
我做的是一個(gè)table的編輯功能,當(dāng)移入某行的時(shí)候展示編輯狀態(tài),在移出某行的時(shí)候顯示的是原始狀態(tài),此時(shí)遇到一種情況,就是
當(dāng)mousenter事件觸發(fā)之后,由于鼠標(biāo)移動(dòng)得太快,同一個(gè)tr上綁定的mouseleave事件壓根兒就沒有執(zhí)行。
如果此時(shí)想要在mouseenter中做節(jié)流,那么這么多的tr,該怎么樣區(qū)分呢?
我這里采用的方式是,在mouseenter中進(jìn)行攔截。
tr有多個(gè),當(dāng)觸發(fā)了某個(gè)tr的mousenter事件后,馬上移入到下一個(gè)tr,但是卻由于鼠標(biāo)移動(dòng)太快沒有觸發(fā)上一個(gè)tr的mouseleave事件,此時(shí)上一個(gè)
tr在mouseenter中已經(jīng)被修改成了編輯狀態(tài),沒有觸發(fā)mouseleave事件,該tr的狀態(tài)就不能恢復(fù)到非編輯狀態(tài)。
此時(shí)怎樣將mouseleave事件沒有被及時(shí)執(zhí)行引起的tr保持編輯狀態(tài)這個(gè)副作用清除呢?
方法: 在給tr綁定的mouseenter事件里做一層攔截。在處理當(dāng)前tr的狀態(tài)改變之前,先看一下其他的tr中是否有tr還沒有退出編輯狀態(tài)的,如果有,就將其重置成非編輯狀態(tài)。
處理完當(dāng)前tr的兄弟節(jié)點(diǎn)后,再處理當(dāng)前tr自己的編輯和非編輯狀態(tài)切換。
$("#table_id_example tbody").on("mouseenter", "tr", function (e) { e.stopPropagation(); var beingEditOrNot = $(this).hasClass("being-edit-row"); var otherRowsPrepareToEditButMissMouseleave = $(this).siblings(); var otherTdsPrepareToEditButMissMouseleave = otherRowsPrepareToEditButMissMouseleave.find(".edit-input-box").parents("td"); $.each(otherTdsPrepareToEditButMissMouseleave , function(index , item) { var txt = $(item).find(".edit-input-box").attr("data-original"); txt = txt ? txt : ""; $(item).removeClass("edit-btn-display"); $(item).html(txt); tableDom.cell($(item)).data(txt); }); var tds = $(this).children("td"); $.each(tds, function (i, val) { var currentEditTdItem = $(val); if (i !== 3) { return; } // if there is something validate wrong,stay there width no value exchange var validateSpanDom = currentEditTdItem.find("span"); var value = validateSpanDom ? validateSpanDom.text() : ""; var validateTxt = validateInputBox(value); if (validateTxt) return; if (beingEditOrNot) return; if (currentEditTdItem.find(".edit-input-box").length > 0) return; var txt = currentEditTdItem.text(); txt = txt.replace("$", ""); txt = txt.replace(/,/g, ""); var put = $(""); put.find(".edit-input-box").val(txt); currentEditTdItem.addClass("edit-btn-display") currentEditTdItem.html(put); console.log("mouseenter", currentEditTdItem.html()) }); });
問題:
為什么鼠標(biāo)移動(dòng)過(guò)快的時(shí)候,mouseleave事件有時(shí)不會(huì)被觸發(fā)呢?
看別人的解釋如下:
程序執(zhí)行時(shí)有一定時(shí)間的,如果過(guò)快,可能兩個(gè)事件就沖突了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101872.html
摘要:快速拖動(dòng)元素失效問題原因及解決方法情景再現(xiàn)晚上在寫畢設(shè)時(shí),碰到個(gè)快速拖動(dòng)元素,元素會(huì)跟不上的問題。延遲之后,元素移動(dòng)的速度趕不上鼠標(biāo)移動(dòng)的速度,可能造成鼠標(biāo)移出元素的狀態(tài),從而觸發(fā)了事件,從而造成了被拖動(dòng)元素停止移動(dòng)。 快速拖動(dòng)元素失效問題原因及解決方法 情景再現(xiàn) 晚上在寫畢設(shè)時(shí),碰到個(gè)快速拖動(dòng)元素,元素會(huì)跟不上的問題。具體情形如下: 代碼及演示結(jié)果 出現(xiàn)的問題showImg(htt...
摘要:還會(huì)有一個(gè)性能上的問題就是當(dāng)頁(yè)面的列表過(guò)長(zhǎng),元素過(guò)多時(shí),在模擬滾動(dòng),下拉刷新這段時(shí)間內(nèi),頁(yè)面也會(huì)有卡頓現(xiàn)象,這里采取了一個(gè)優(yōu)化策略即列表較長(zhǎng)時(shí)數(shù)量較多時(shí),在觸發(fā)下拉刷新的時(shí)機(jī)時(shí)將頁(yè)面視窗之外的元素隱藏或者存放在里面。 移動(dòng)web滾動(dòng)問題 在移動(dòng)端如果使用局部滾動(dòng),意思就是我們的滾動(dòng)在一個(gè)固定寬高的div內(nèi)觸發(fā),將該div設(shè)置成overflow:scroll/auto;來(lái)形成div內(nèi)部的...
摘要:原文地址開始在本教程中,你將學(xué)會(huì)如何使用性能分析工具分析頁(yè)面上的性能瓶頸。其中包含了捕獲性能指標(biāo)相關(guān)的設(shè)置。參考分析優(yōu)化版的性能使用剛剛學(xué)習(xí)的工作流和工具,單擊演示中的優(yōu)化以啟用優(yōu)化的代碼,進(jìn)行另一次性能記錄,然后分析結(jié)果。 原文地址:https://developers.google.com... 開始 在本教程中,你將學(xué)會(huì)如何使用性能分析工具分析頁(yè)面上的性能瓶頸。 在隱身模式下打...
摘要:最后,我們只要在事件處理程序中獲得這個(gè)布爾值傳給這幾個(gè)函數(shù)就可以了,其中,全選框反選鏈接可以從全選框的屬性獲得這個(gè)值,而全體的復(fù)選框要獲得就得靠遍歷了。 0x1播放列表收縮展開 實(shí)現(xiàn)效果 值得注意的一個(gè)地方是那個(gè)箭頭,我這里只是用了簡(jiǎn)單的字符串替換,而原題用了背景圖片移動(dòng)來(lái)實(shí)現(xiàn)切換箭頭,但是似乎那樣做會(huì)導(dǎo)致整個(gè)容器的左右偏移、效果不是很好。 0x2鼠標(biāo)移過(guò)顯示車標(biāo) 實(shí)現(xiàn)效果 這題看起來(lái)...
摘要:之前寫過(guò)一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理瀏覽器事件解析。注意,頁(yè)面從瀏覽器緩存加載,并不會(huì)觸發(fā)事件。事件有一個(gè)屬性,返回一個(gè)布爾值。此外,不支持事件,可以使用事件代替。 之前寫過(guò)一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理——JavaScript瀏覽器事件解析。這一篇主要寫一些常用的事件及一些可能的坑。 表單事件 鍵盤事件 當(dāng) , 的值發(fā)生變化時(shí)觸發(fā)。此外,打開 contente...
閱讀 1646·2023-04-26 02:11
閱讀 2990·2023-04-25 16:18
閱讀 3720·2021-09-06 15:00
閱讀 2636·2019-08-30 15:55
閱讀 1942·2019-08-30 13:20
閱讀 2058·2019-08-26 18:36
閱讀 3131·2019-08-26 11:40
閱讀 2549·2019-08-26 10:11