新版的手術(shù)移動(dòng)護(hù)理系統(tǒng),增加了一項(xiàng)提升用戶使用體驗(yàn),提高工作效率的功能,對(duì)于老版本的手術(shù)排班,在保證了原有功能的情況下,需要增加在點(diǎn)擊某一個(gè)患者的時(shí)候,同時(shí)選中當(dāng)前房間今日的所有患者,統(tǒng)一安排護(hù)士信息。對(duì)于升級(jí)來(lái)說(shuō),原有的框架版本可能太低,就需要我們自己來(lái)實(shí)現(xiàn)一些功能。
對(duì)于Layui框架table模塊自帶的監(jiān)聽(tīng)事件,我們沒(méi)有辦法把模擬點(diǎn)擊的功能寫(xiě)到里面,因?yàn)槟M點(diǎn)擊每次都會(huì)執(zhí)行點(diǎn)擊事件,則會(huì)造成監(jiān)聽(tīng)事件進(jìn)行死循環(huán)當(dāng)中,所以我們的事件需要自定義來(lái)完成。
對(duì)于功能要求來(lái)說(shuō),代碼的思路也就比較清晰,在點(diǎn)擊患者信息一覽的時(shí)候,判斷當(dāng)前表格中所有信息里面,手術(shù)間號(hào)與當(dāng)前點(diǎn)擊的患者的手術(shù)間號(hào)一致的手術(shù),進(jìn)行模擬點(diǎn)擊。
這里貼一下我程序里面的執(zhí)行代碼
這里會(huì)有什么bug呢,就是之前說(shuō)到的死循環(huán),因?yàn)辄c(diǎn)擊就會(huì)觸發(fā)layui自帶的table.on的監(jiān)聽(tīng),造成死循環(huán),這里就是比較難處理的地方,所以呢我們?cè)谶@里就需要做一些調(diào)整,來(lái)防止觸發(fā)死循環(huán),這里我的思路是,在觸發(fā)模擬點(diǎn)擊的時(shí)候,把點(diǎn)擊的范圍縮小到table最前面的checkbox小框,也就是說(shuō)定義模擬點(diǎn)擊的地方,這里是第一步
第二部的話就是阻止這一小塊的事件,也就是點(diǎn)擊這里阻止后面的監(jiān)聽(tīng)事件繼續(xù)監(jiān)聽(tīng)觸發(fā)死循環(huán),這里用到一個(gè)方法stopPropagation(),通過(guò)限制模擬點(diǎn)擊位置的事件觸發(fā)來(lái)阻止死循環(huán),達(dá)到我們想要的效果