vue怎麼新增和移除事件
vue新增和移除事件的方法:1、透過「addEventListener()」方法新增事件句柄;2、透過「removeEventListener()」方法移除事件句柄。
本教學操作環境:Windows10系統、Vue 3版、Dell G3電腦。
vue怎麼加入和移除事件?
vue事件新增和移除
#.removeEventListener()
方法要求我們向其傳遞與傳遞給.addEventListener()
的函數完全相同的監聽函式。
完全相同意味著:
- 具有相同的目標
- 具有相同的類型
- 並傳遞完全相同的監聽器
定義和用法
removeEventListener() 方法用於移除由 addEventListener() 方法新增的事件句柄。
注意: 如果要移除事件句柄,addEventListener() 的執行函數必須使用外部函數,如上實例所示 (myFunction)。
匿名函數,類似 "document.removeEventListener("event", function(){ myScript });" 此事件是無法移除的。
例如:
{ name: 'Richard' } === { name: 'Richard' }复制代码
的答案會是false,因為他們屬於不同的實體。
那麼,什麼樣的可以成功移除呢?
function myEventListeningFunction() { console.log('howdy'); } // 为 点击 事件添加一个监听器,来运行 `myEventListeningFunction` 函数 document.addEventListener('click', myEventListeningFunction); // 立即移除 应该运行`myEventListeningFunction`函数的 点击 事件监听器 document.removeEventListener('click', myEventListeningFunction);复制代码
這可以√,因為他們都指向myEventListeningFunction()這同一個方法。
而如果是
// 为 点击 事件添加一个监听器,来运行 `myEventListeningFunction` 函数 document.addEventListener('click', function myEventListeningFunction() { console.log('howdy'); }); // 立即移除 应该运行`myEventListeningFunction`函数的 点击 事件监听器 document.removeEventListener('click', function myEventListeningFunction() { console.log('howdy'); });复制代码
則不會成功移除×,因為他們的監聽器函數並不是指向同一個。
事件傳遞有兩種方式:冒泡與捕獲。
事件傳遞定義了元素事件觸發的順序。如果將
元素插入
元素, 哪個元素的 “click” 事件先被觸發呢?
在冒泡中,內部元素的事件會先被觸發,然後再觸發外部元素,即:
元素的點擊事件先觸發,然後觸發
在擷取中,外部元素的事件會先被觸發,然後才會觸發內部元素的事件,即:
元素的點擊事件。
addEventListener() 方法可以指定「useCapture」 參數來設定傳遞類型:
addEventListener(event, function, useCapture);
預設值為 false
, 即冒泡傳遞,當值為 true
時, 事件使用擷取傳遞。
removeEventListener()
方法移除由 addEventListener()
方法新增的事件句柄:
element.removeEventListener("mousemove", myFunction) ;
瀏覽器相容處理
var x = document.getElementById("myBtn"); if (x.addEventListener) { // 所有主流浏览器,除了 IE 8 及更早版本 x.addEventListener("click", myFunction); } else if (x.attachEvent) { // IE 8 及更早版本 x.attachEvent("onclick", myFunction); }
IE 8
及更早IE 版本,Opera 7.0
及其更早版本不支援 addEventListener()
和 removeEventListener()
方法。但是,對於這類瀏覽器版本可以使用 detachEvent()
方法來移除事件句柄:
element.attachEvent(event, function); element.detachEvent(event, function);
vue的事件節流和移除
通常寫法:
created() { window.addEventListener("scroll", this.throttle()); }, destroyed() { window.removeEventListener("scroll", this.throttle()); } // methods throttle() { let lastTime = new Date(); let timer = null; return () => { let startTime = new Date(); let remaining = 200 - (startTime - lastTime); clearTimeout(timer); if (startTime - lastTime > 200) { lastTime = startTime; this.scroll.call(this); } else { // 最后一次也执行 timer = setTimeout(() => { this.scroll.call(this); }, remaining); } }; }
都是錯的,呵呵。
问题的原因和“data为什么是函数”是一样的。节流函数throttle每次返回的函数是不一样的,所以,remove的函数和add的函数式不一样的。处理的方法就是对 节流 函数进行改造。(当然你也可以不节流就没有事了)
created() { this.lastTime = new Date(); this.timer = null; window.addEventListener("scroll", this.throttle); }, destroyed() { window.removeEventListener("scroll", this.throttle); } // methods throttle() { let startTime = new Date(); let remaining = 200 - (startTime - this.lastTime); clearTimeout(this.timer); if (startTime - this.lastTime > 200) { this.lastTime = startTime; this.scroll.call(this); } else { // 最后一次也执行 this.timer = setTimeout(() => { this.scroll.call(this); }, remaining); } }
事件操作和節流融合一起,所以要理解節流的實作原理。 。
推薦學習:《vue.js影片教學》
以上是vue怎麼新增和移除事件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 JSON.parse() 字符串轉對象最安全高效:確保字符串符合 JSON 規範,避免常見錯誤。使用 try...catch 處理異常,提升代碼健壯性。避免使用 eval() 方法,存在安全風險。對於巨大 JSON 字符串,可考慮分塊解析或異步解析以優化性能。

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

Vue.js不難學,特別是對於有JavaScript基礎的開發者。 1)其漸進式設計和響應式系統簡化了開發過程。 2)組件化開發讓代碼管理更高效。 3)使用示例展示了基本和高級用法。 4)常見錯誤可以通過VueDevtools調試。 5)性能優化和最佳實踐如使用v-if/v-show和key屬性可提升應用效率。

Vue.js主要用於前端開發。 1)它是一個輕量級且靈活的JavaScript框架,專注於構建用戶界面和單頁面應用。 2)Vue.js的核心是其響應式數據系統,數據變化時視圖自動更新。 3)它支持組件化開發,UI可拆分為獨立、可複用的組件。

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。
