亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Vue 自定義指令實(shí)現(xiàn)點(diǎn)擊元素外觸發(fā)事件

Youngs / 3112人閱讀

摘要:前置知識(shí)既然要用的自定義指令,那么肯定要了解一下自定義指令的相關(guān)知識(shí)啦,關(guān)于這部分的內(nèi)容,看我之前寫(xiě)過(guò)的自定義指令或者直接看官方文檔就可以啦,這里我就不再多講了。

前言 最近搞了畢設(shè),需要實(shí)現(xiàn)一個(gè)場(chǎng)景,點(diǎn)擊一塊區(qū)域,彈出一個(gè)編輯區(qū)域,點(diǎn)擊頁(yè)面的其他地方的時(shí)候,這個(gè)編輯區(qū)域就隱藏,本想想之前寫(xiě)模態(tài)框一樣寫(xiě)個(gè)方法的時(shí)候,突然

覺(jué)得可以嘗試用 vue 相關(guān)的東西優(yōu)雅的解決這個(gè)事情,然后就學(xué)了下面的自定義指令了。

前置知識(shí)

既然要用 Vue 的自定義指令,那么肯定要了解一下 Vue 自定義指令的相關(guān)知識(shí)啦,關(guān)于這部分的內(nèi)容,看我之前寫(xiě)過(guò)的《Vue 自定義指令》或者直接看官方文檔就可以啦,這里我就不再多講了。

解決思路

這個(gè)按照我之前寫(xiě)模態(tài)框的經(jīng)驗(yàn),我的做法是給 document 綁定一個(gè)點(diǎn)擊事件,然后判斷觸發(fā)點(diǎn)擊事件的那個(gè)元素是不是模態(tài)框所在的目標(biāo)區(qū)域,如果不是,那么就觸發(fā)隱藏事件。看一下代碼吧

$(document).mouseup(function(e){
  var _con = $(" 目標(biāo)區(qū)域 ");   // 設(shè)置目標(biāo)區(qū)域
  if(!_con.is(e.target)){ // 判斷是不是目標(biāo)區(qū)域
    some code...   // 功能代碼
  }
});
實(shí)現(xiàn)

有了思路,實(shí)現(xiàn)起來(lái)就簡(jiǎn)單了。就直接放定義的代碼啦

const clickOutside = {
  // 初始化指令
  bind(el, binding, vnode) {
    function clickHandler(e) {
      // 這里判斷點(diǎn)擊的元素是否是本身,是本身,則返回
      if (el.contains(e.target)) {
        return false;
      }
      // 判斷指令中是否綁定了函數(shù)
      if (binding.expression) {
        // 如果綁定了函數(shù) 則調(diào)用那個(gè)函數(shù),此處binding.value就是handleClose方法
        binding.value(e);
      }
    }
    // 給當(dāng)前元素綁定個(gè)私有變量,方便在unbind中可以解除事件監(jiān)聽(tīng)
    el.__vueClickOutside__ = clickHandler;
    document.addEventListener("click", clickHandler);
  },
  update() {},
  unbind(el, binding) {
    // 解除事件監(jiān)聽(tīng)
    document.removeEventListener("click", el.__vueClickOutside__);
    delete el.__vueClickOutside__;
  },
};


directives: {clickOutside},

接下來(lái)就可以就可以在組件內(nèi)直接使用啦

我實(shí)現(xiàn)的效果

然后關(guān)于這個(gè)點(diǎn)擊元素外觸發(fā)某個(gè)事件,如果還有啥其他優(yōu)雅的方式的話,下面留言分享一下哈。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/99483.html

相關(guān)文章

  • Vue學(xué)習(xí)筆記(一)

    摘要:一介紹也稱為,讀音類似,錯(cuò)誤讀音,由華人尤雨溪開(kāi)源并維護(hù)。隱藏四事件之前說(shuō)了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識(shí)。還有一些其他鍵盤(pán)事件,具體參考官方文檔。模板就是,用來(lái)進(jìn)行數(shù)據(jù)綁定,顯示在頁(yè)面中,也稱為語(yǔ)法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯(cuò)誤讀音v-u-e,由華人尤雨溪開(kāi)源并維護(hù)。 Vue有以下特點(diǎn): 是一個(gè)構(gòu)建用戶界面的框架 是一...

    baoxl 評(píng)論0 收藏0
  • Vue學(xué)習(xí)筆記(一)

    摘要:一介紹也稱為,讀音類似,錯(cuò)誤讀音,由華人尤雨溪開(kāi)源并維護(hù)。隱藏四事件之前說(shuō)了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識(shí)。還有一些其他鍵盤(pán)事件,具體參考官方文檔。模板就是,用來(lái)進(jìn)行數(shù)據(jù)綁定,顯示在頁(yè)面中,也稱為語(yǔ)法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯(cuò)誤讀音v-u-e,由華人尤雨溪開(kāi)源并維護(hù)。 Vue有以下特點(diǎn): 是一個(gè)構(gòu)建用戶界面的框架 是一...

    liukai90 評(píng)論0 收藏0
  • Vue學(xué)習(xí)筆記(一)

    摘要:一介紹也稱為,讀音類似,錯(cuò)誤讀音,由華人尤雨溪開(kāi)源并維護(hù)。隱藏四事件之前說(shuō)了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識(shí)。還有一些其他鍵盤(pán)事件,具體參考官方文檔。模板就是,用來(lái)進(jìn)行數(shù)據(jù)綁定,顯示在頁(yè)面中,也稱為語(yǔ)法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯(cuò)誤讀音v-u-e,由華人尤雨溪開(kāi)源并維護(hù)。 Vue有以下特點(diǎn): 是一個(gè)構(gòu)建用戶界面的框架 是一...

    rollback 評(píng)論0 收藏0
  • Vue 定義指令

    摘要:自定義指令定義直接看官網(wǎng)的介紹吧覺(jué)得官方文檔說(shuō)的很清楚了,所以我基本都是抄他的了。除了核心功能默認(rèn)內(nèi)置的指令和,也允許注冊(cè)自定義指令。然而,有的情況下,你仍然需要對(duì)普通元素進(jìn)行底層操作,這時(shí)候就會(huì)用到自定義指令。 前言 最近搞了畢設(shè),需要實(shí)現(xiàn)一個(gè)場(chǎng)景,點(diǎn)擊一塊區(qū)域,彈出一個(gè)編輯區(qū)域,點(diǎn)擊頁(yè)面的其他地方的時(shí)候,這個(gè)編輯區(qū)域就隱藏,本想想之前寫(xiě)模態(tài)框一樣寫(xiě)個(gè)方法的時(shí)候,突然showImg(...

    you_De 評(píng)論0 收藏0
  • vue定義指令clickoutside擴(kuò)展--多個(gè)元素的并集作為inside

    摘要:指令中自定義的指令之一,顧名思義,就是當(dāng)鼠標(biāo)點(diǎn)擊了指令所綁定元素的外部時(shí),就會(huì)觸發(fā)綁定方法。在鼠標(biāo)放開(kāi)觸發(fā)事件處理時(shí),通過(guò)獲取到他們的對(duì)象。使用示例原來(lái)的使用方式不受影響,只是添加了多個(gè)元素并集作為的功能。指令中的參數(shù)學(xué)習(xí) 都是個(gè)人理解,如果發(fā)現(xiàn)錯(cuò)誤,懇請(qǐng)大家批評(píng)指正,謝謝。還有我說(shuō)的會(huì)比較啰嗦,因?yàn)槭且宰陨聿穗u水平的視角來(lái)記錄學(xué)習(xí)理解的過(guò)程,見(jiàn)諒。 1.前言 產(chǎn)品使用vue+elem...

    ivan_qhz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Youngs

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<