ホームページ ウェブフロントエンド jsチュートリアル iScroll_javascript スキルでイベント クリックが 2 回トリガーされる問題の解決策

iScroll_javascript スキルでイベント クリックが 2 回トリガーされる問題の解決策

May 16, 2016 pm 04:10 PM
クリック

私はこれまでに、この問題について論じた多くの友人の記事を読みました。たとえば、変数を使用して実行間隔などを記録します。毎回オナニーしなければいけない気がして、かなり疲れます。私はレンガを移動する前にツールを選択するのが好きです。実際、この問題の解決策は非常に簡単です。 iScroll は、ブラウザーがクリックされたときに実際に touchstart イベントと touchend イベントをインターセプトします。 js を使用して、end に触れたときに要素の onclick イベント (_end 関数) をトリガーします。実際の動作では、最初に touchend が実行され、次に onclick 関連関数が実行されます。これにより、1 回のクリックと 2 つのトリガーという面倒な作業が発生します。これはそもそも問題ではありません。これが問題となる理由は、iScroll のソース コードを確認する必要があるためです。この問題を解決する方法は、関数の 2 回目の実行を拒否することです。そして私のロジックも全く同じです。 _end 関数でクリック イベントをトリガーするコードを実行した後、onclick イベントにバインドされた関数を削除できます。次に、数百ミリ秒のタイミング後にイベントを再度追加します。例:

コードをコピーします コードは次のとおりです:

//処理前
ダブルクリックテスト
//処理後
ダブルクリック テスト

onclick 関連関数を削除すると、当然のことながらテスト関数は 2 回目にトリガーされなくなります。次回も引き続き使用するには、setTimeout を使用して onclick コンテンツを復元します。

変更された iscroll ソース コード (約 550 ~ 570 行、_end 関数内):

コードをコピー コードは次のとおりです:

that.doubleTapTimer = setTimeout(function () {
                            that.doubleTapTimer = null;
                            // 最後にタッチされた要素を検索します
                            ターゲット = point.target;
                            while (target.nodeType != 1) target = target.parentNode;
                            if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
                                ev = doc.createEvent('MouseEvents');
                                ev.initMouseEvent('click', true, true, e.view, 1,
                                    point.screenX、point.screenY、point.clientX、point.clientY、
                                    e.ctrlKey、e.altKey、e.shiftKey、e.metaKey、
                                    0、null);
                                ev._fake = true;
                                target.dispatchEvent(ev);
                                /**以下のコードは新しいコードです**/
                                // クリック イベントの要素を検出します。
                                var obj = $(target).attr("onclick") != null ? $(ターゲット) : $(ターゲット).parents("[onclick]")[0];
                                if (obj != null) {
                                    var clickContent = $(obj).attr("onclick");
                                    if (clickContent != "void(0)") {
                                        // 新しいプロパティを利用して保存されるオリジナルのクリック関数
                                        $(obj).attr("data-clickbak", $(obj).attr("onclick"));
//onclick 属性値を変更します。
$(obj).attr("onclick", "void(0)");
//激しいクリックを防止します
If (that.hashBox.length>0) {
for (var _i = 0; _i < that.hashBox.length; _i )
                                                                                                                                                                                 That.hashBox.splice(_i, 1);
休憩;
                                                                                                                                                                                                                                                 That.hashBox.push($(obj));
That._clickBack();
} } // end
}                                                                                                                                                                                                                                                              

_clickBack 関数と hashBox コード スニペット (_end 関数の前に追加)

コードをコピーします コードは次のとおりです:

ハッシュボックス: [],
/*クリックされたオブジェクトのイベントを復元*/
_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 のソースコードを変更せずに public 関数を通じて実装することもできます。

上記がこの記事のすべてです。iscroll スライディング コントロールの使い方を学ぶのに役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhone iOS 17で複数のタイマーを設定する方法 iPhone iOS 17で複数のタイマーを設定する方法 Sep 18, 2023 am 09:01 AM

iOS 17 では、時計アプリを使用して iPhone に複数のタイマーを設定したり、Siri を使用してハンズフリーで設定したりできます。この記事では両方について説明します。それらを見てみましょう。時計アプリを使用して iPhone で複数のタイマーを設定する iPhone で時計アプリを開き、右下隅の [タイマー] タブをタップします。次に、時、分、秒を設定します。 「ラベル」および「タイマー終了時」オプションを使用して、タイマーの名前とタイマー完了時の好みのトーンを設定できます。これはタイマーを区別するのに役立ちます。完了したら、「開始」ボタンをクリックします。次に、右上隅にある「+」アイコンをクリックします。次に、上記の手順を繰り返して、iPhone に複数のタイマーを設定します。閲覧することもできます

iPhoneのiOS 17リマインダーアプリで買い物リストを作成する方法 iPhoneのiOS 17リマインダーアプリで買い物リストを作成する方法 Sep 21, 2023 pm 06:41 PM

iOS17のiPhoneでGroceryListを作成する方法 リマインダーアプリでGroceryListを作成するのは非常に簡単です。リストを追加して項目を入力するだけです。アプリは商品を自動的にカテゴリーに分類し、パートナーやフラットパートナーと協力してストアで購入する必要のあるもののリストを作成することもできます。これを行う完全な手順は次のとおりです: ステップ 1: iCloud リマインダーをオンにする 奇妙に聞こえるかもしれませんが、Apple は、iOS17 で GroceryList を作成するには iCloud からのリマインダーを有効にする必要があると言っています。その手順は次のとおりです: iPhone の設定アプリに移動し、[あなたの名前] をタップします。次に、「i」を選択します

iPhone の連絡先に名刺を設定する方法 [2023] iPhone の連絡先に名刺を設定する方法 [2023] Sep 22, 2023 pm 09:17 PM

iOS の My Business Cards を使用すると、Siri やその他のサービスが認識し、あなたとあなたの電話番号を関連付けるためのパーソナライズされた連絡先カードを作成できます。 iOS17 での連絡先ポスターの導入により、連絡先ポスターの作成にマイ カードが使用されるようになり、非常に重要になります。連絡先ポスターを立ち上げて実行したい場合は、My Business Card を設定することから始める必要があります。 My Business Card の作成方法と、それを Siri および連絡先ポスターとスムーズに連携させる方法について説明します。 iPhone の連絡先にマイ名刺を設定する方法 [2023] iPhone に初めてマイ名刺を設定する場合は、連絡先アプリのみを使用して行う必要があります

iPhone でアラームをオフにする方法 [2023] iPhone でアラームをオフにする方法 [2023] Aug 21, 2023 pm 01:25 PM

スマートフォンの出現以来、スマートフォンが目覚まし時計に取って代わられたのは間違いありません。 iPhone をお持ちの場合は、時計アプリを使用して、1 日を通して複数の機会にアラームを簡単に設定できます。このアプリでは、アラームの時間、トーン、繰り返しの頻度、およびスヌーズ オプションを使用してアラームを遅らせるかどうかを設定できます。設定したアラームをオフにしたい場合は、次の投稿を参考に iPhone の定期アラームと目覚ましアラームを無効にして削除することができます。 iPhone で通常のアラームをオフにする方法 デフォルトでは、時計アプリにアラームを追加するか、Siri にアラームの追加を依頼すると、実際には通常のアラームが作成されます。 iPhone に目覚まし時計を好きなだけ作成して配置できます

iPhoneで連絡先の写真を変更する方法 iPhoneで連絡先の写真を変更する方法 Jun 08, 2023 pm 03:44 PM

iOS17がついに登場し、多くの新機能が含まれています。今日のチュートリアルでは、iPhone で連絡先の写真を変更する方法を学びましょう。 Apple の最近のイベント WWDC 2023 では、多数のエキサイティングな製品と今後のソフトウェア アップデートが発表されました。 iOS 17 の注目すべき機能の 1 つは、連絡先の写真とポスターをカスタマイズするオプションで、他の人が iPhone であなたから電話を受けたときにユニークな方法で挨拶できるようになります。 iOS 用のこの革新的な機能は、通話をより個人的でユーザーフレンドリーなものにするために設計されており、受信者の画面上で通話がどのように表示されるかを選択できるようになります。この新機能を手に入れて、電話をかけるときに自分好みの方法で愛する人に挨拶したい場合は、この機能を iPhone に追加する方法をご紹介します。

iPhone および iPad で Apple Maps Guide を使用する技術をマスターする iPhone および iPad で Apple Maps Guide を使用する技術をマスターする Aug 30, 2023 am 09:25 AM

進化し続けるテクノロジーの世界では、デジタル マップをナビゲートする能力は不可欠なスキルとなっています。この記事では、iPhone および iPad で Apple Maps Guides を使用する方法についての包括的なガイドを提供します。この機能は、ユーザーが周囲を探索し、旅行を計画する方法に革命をもたらす機能です。 Apple マップはすべての Apple デバイスに組み込まれたアプリケーションであり、シームレスなナビゲーション エクスペリエンスを提供するために常に更新および改善されています。最も注目すべき機能の 1 つは、世界中のさまざまな都市で訪れるべき興味深い場所の厳選されたリストを提供するガイド機能です。この機能は旅行者にとって有益であるだけでなく、自分の街の新しい魅力を発見したいと考えている地元の人々にとっても有益です。 iOS で Apple マップを使用する方法ガイド まず、Apple マップにアクセスします

Vue を通じて画像のクリックによるズームインおよびズームアウト機能を実装するにはどうすればよいですか? Vue を通じて画像のクリックによるズームインおよびズームアウト機能を実装するにはどうすればよいですか? Aug 18, 2023 pm 08:43 PM

Vue を通じて画像のクリックによるズームインおよびズームアウト機能を実装するにはどうすればよいですか?最新の Web 開発では、クリックして画像を拡大または縮小することが一般的な要件です。人気のあるフロントエンド フレームワークとして、Vue は豊富な機能と簡潔な構文を提供しており、この機能を簡単に実装できます。この記事では、Vue を使用して画像のクリックによるズームインおよびズームアウト機能を実装する方法とコード例を紹介します。まず、複数の画像を含むコンポーネントが必要です。 Vue の v-for ディレクティブを使用して、画像リストを動的にレンダリングできます。以下は簡単です

Android スマートフォンがワイヤレス ネットワークに接続できない場合の修復方法 Android スマートフォンがワイヤレス ネットワークに接続できない場合の修復方法 Aug 14, 2023 pm 08:53 PM

予備チェック より技術的な解決策を掘り下げる前に、Android スマートフォンでいくつかの予備チェックを実行する価値があります。 WiFi 接続を確認します。他のデバイスが WiFi ネットワークに接続できることを確認します。できない場合は、ルーターまたはインターネット サービス プロバイダーに問題がある可能性があります。デバイスを再起動する: 場合によっては、単純な再起動で多くのテクノロジー関連の問題を解決できる場合があります。携帯電話の電源を切り、数秒待ってから再び電源を入れます。ネットワークを削除して再接続する: WiFi 設定に移動し、問題のネットワークを選択して、[削除] を選択します。次に、パスワードを再度入力して再接続します。これらの手順がうまくいかない場合は、さらに深く掘り下げてみましょう。高度なトラブルシューティング 1. システムのアップデートを確認する 古いソフトウェアによって、多くの場合、次のような問題が発生します。

See all articles