首頁 web前端 js教程 iScroll中事件點擊觸發兩次解決方案_javascript技巧

iScroll中事件點擊觸發兩次解決方案_javascript技巧

May 16, 2016 pm 04:10 PM
點選

  之前也看了很多朋友的文章裡有講這個問題。例如使用一個變數記錄執行的間隔時間什麼的。感覺每次都要去擼一下,比較累人。本人喜歡搬磚前先選工具。其實解決這個方法很簡單。 iScroll呢其實是截獲了點擊瀏覽器時的touchstart和touchend事件。在touchend的時候使用js去觸發元素的onclick事件(_end這個函數)。而在實際操作中,先執行了touchend,然後再執行了一次onclick的相關函數。這樣就形成了一個頭痛的點擊兩次觸發。這本來就一個不是問題的問題。之所以說這是個問題,是因為這樣是我們不得不去看iScroll的原始碼。解決這個問題的途徑就是拒絕第二次執行函數。而我的邏輯也正是如此。我們可以在執行完_end函數中的觸發click事件的程式碼後,移除onclick事件上綁定的函數。然後在定時幾百毫秒之後在重新把這個事件加上去。舉例:

複製程式碼 程式碼如下:

//處理前
雙擊測試
//處理之後
雙擊測試

在移除onclick相關函數之後這個第二次就自然不會再觸發test函數了。為了下次還能繼續用我們可以使用setTimeout的方式把onclick的內容還原回去。

改造後的iscroll原始碼(約550行~570行的樣子,_end函數中):

複製程式碼 程式碼如下:

that.doubleTapTimer = setTimeout(function () {
                            that.doubleTapTimer = null;
                            // 找到最後且被觸摸的元素
                            目標=點.目標;
                            while (target.nodeType != 1) target🎜>;;                                , target.dispatchEvent(ev);                                / /**以下程式碼為新增程式碼**/
                     為
                             地 🎜>                                                                  地                                  地                                                                                                             地
                                                                                                                                                              for (var _i = 0; _i                                                                                                                 🎜>                                                                                                                                                                                                                                                                         }
}
                                }//end
                            }
                        }, that.options.zoom ? 250 : 0);

_clickBack函數及hashBox程式碼片段(加在_end函數之前)

複製程式碼 程式碼如下:

       hashBox: [],
       /*還原被點選物件的事件*/
        _clickBack: function () {
            var that = this;
            setTimeout(function () {
                if (that.hashBox.length > 0) {
                    var obj = that.hashBox.pop();
                    obj.attr("onclick", obj.attr("data-clickbak"));
                    if (that.hashBox.length > 0) that._clickBack();
                }
            }, 500);
        }

當然,也可以不修改 iscroll原始碼,透過一個公用函數來實現。

以上就是本文所講述的全部內容了,希望對大家學習使用iscroll滑動控制有所幫助

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
在iPhone iOS 17上如何設定多個計時器 在iPhone iOS 17上如何設定多個計時器 Sep 18, 2023 am 09:01 AM

在iOS17中,您可以使用時鐘應用程式在iPhone上設定多個計時器,或使用Siri免持設定。我們在本文中討論了兩者。讓我們來看看它們。使用時鐘應用程式在iPhone上設定多個計時器打開iPhone上的時鐘應用程序,然後點擊右下角的計時器選項卡。現在,設定小時、分鐘和秒。您可以使用「標籤」和「計時器何時結束」選項來設定計時器的名稱以及計時器完成時的首選音調。這將幫助您區分計時器。完成後,點擊“開始”按鈕。然後,點擊右上角的「+」圖示。現在,重複上述步驟以在iPhone上設定多個計時器。您還可以瀏

如何在 iPhone 上關閉鬧鐘 [2023] 如何在 iPhone 上關閉鬧鐘 [2023] Aug 21, 2023 pm 01:25 PM

自從智慧型手機問世以來,它們無疑取代了鬧鐘。如果您擁有iPhone,則可以使用時鐘應用程式在一天中的多個場合輕鬆設定任意數量的鬧鐘。該應用程式可讓您配置鬧鐘時間,提示音,重複的頻率,以及您是否希望使用“貪睡”選項來延遲它們。如果您想關閉已設定的鬧鐘,以下貼文應該可以幫助您停用和刪除iPhone上的常規鬧鐘和喚醒鬧鐘。如何在iPhone上關閉常規鬧鐘預設情況下,當您在時鐘應用程式上添加鬧鐘或要求Siri為您添加鬧鐘時,您實際上是在創建常規鬧鐘。您可以在iPhone上創建任意數量的鬧鐘,並且可以將它們

製作 iPhone 上 iOS 17 提醒應用程式中的購物清單的方法 製作 iPhone 上 iOS 17 提醒應用程式中的購物清單的方法 Sep 21, 2023 pm 06:41 PM

如何在iOS17中的iPhone上製作GroceryList在「提醒事項」應用程式中建立GroceryList非常簡單。你只需添加一個列表,然後用你的項目填充它。該應用程式會自動將您的商品分類,您甚至可以與您的伴侶或扁平夥伴合作,列出您需要從商店購買的東西。以下是執行此操作的完整步驟:步驟1:開啟iCloud提醒事項聽起來很奇怪,蘋果表示您需要啟用來自iCloud的提醒才能在iOS17上建立GroceryList。以下是它的步驟:前往iPhone上的「設定」應用,然後點擊[您的姓名]。接下來,選擇i

如何在iPhone上的「通訊錄」中設定我的名片 [2023] 如何在iPhone上的「通訊錄」中設定我的名片 [2023] Sep 22, 2023 pm 09:17 PM

借助iOS中的“我的名片”,您可以建立個人化的聯絡人名片,Siri和其他服務可識別該名片,並與您和您的電話號碼相關聯。隨著iOS17中聯絡人海報的引入,「我的卡片」變得非常重要,因為它現在用於創建您的聯絡人海報。如果您渴望啟動並運行聯絡人海報,則必須從設定「我的名片」開始。我們將逐步介紹如何創建「我的名片」以及如何使其與Siri和您的聯絡人海報順利配合使用。如何在iPhone上的“通訊錄”中設定“我的名片”[2023]如果您是首次在iPhone上設定“我的名片”,則必須僅透過“通訊錄”應用程式進行設

如何在iPhone上更改聯絡人照片 如何在iPhone上更改聯絡人照片 Jun 08, 2023 pm 03:44 PM

iOS17終於來了,它包含了許多新功能。讓我們在今天的教學中學習如何在iPhone上更改聯絡人照片。蘋果最近的WWDC2023活動推出了一系列令人興奮的產品和即將推出的軟體更新。 iOS17的顯著功能之一是自訂您的聯絡人照片和海報的選項,提供了一種獨特的方式在其他人在iPhone上收到您的電話時向他們打招呼。 iOS的這項創新功能旨在增強電話通話的個人化和使用者友善性,讓您選擇在收件者螢幕上的顯示方式。如果您渴望親身體驗這項新功能,並在撥打電話時以個性化的方式問候您的親人,這裡有有關如何在iPho

掌握 iPhone 和 iPad 上 Apple 地圖指南的使用技巧 掌握 iPhone 和 iPad 上 Apple 地圖指南的使用技巧 Aug 30, 2023 am 09:25 AM

在不斷發展的科技世界中,導航數位地圖的能力已成為一項基本技能。本文提供了有關如何在iPhone和iPad上使用Apple地圖指南的綜合指南,該功能徹底改變了用戶探索周圍環境和規劃旅程的方式。 Apple地圖是所有Apple裝置上的內建應用程序,它不斷更新和改進,以提供無縫導航體驗。它最顯著的功能之一是「指南」功能,它提供了世界各地各個城市有趣景點的精選清單。此功能不僅對旅行者有利,而且對希望在自己城市中發現新景點的當地人來說也是福音。如何在iOS上使用Apple地圖指南首先,造訪Apple地圖上的

如何透過Vue實現圖片的點擊放大和縮小功能? 如何透過Vue實現圖片的點擊放大和縮小功能? Aug 18, 2023 pm 08:43 PM

如何透過Vue實現圖片的點擊放大和縮小功能?在現代Web開發中,圖片點擊放大和縮小是一個常見的需求。 Vue作為一種流行的前端框架,提供了豐富的功能和簡潔的語法,可以很方便地實現這一功能。本文將介紹如何透過Vue實現圖片的點擊放大和縮小功能,並提供程式碼範例。首先,我們需要一個包含多張圖片的組件。可以使用Vue的v-for指令動態渲染圖片清單。以下是一個簡單

如何修復 WiFi 通話在安卓上不起作用 如何修復 WiFi 通話在安卓上不起作用 Jun 24, 2023 am 10:55 AM

1.驗證是否已啟用WiFi通話您的第一步應該是驗證您的裝置上是否啟用了WiFi通話功能。開啟「電話」應用程式:點選主畫面或應用程式抽屜中的手機圖示。存取設定選單:點擊螢幕右上角的三點選單(也稱為“漢堡選單”),然後從下拉選單中選擇“設定”。尋找WLAN通話:此設定的位置可能因設備製造商而異。它通常位於“通話”或“高級通話”下。點擊它。啟用WLAN通話:如果尚未啟用WLAN通話,請將其開啟。 2.檢查您的網路連線您的WiFi通話功能在很大程度上取決於您的網路連線。因此,請確保您的WiFi連線穩定。您可以

See all articles