DIVマスクを使用して、マウスでチェックボックスを直接チェックすることが無効である問題を解決します

DIVマスクを使用して、マウスでチェックボックスを直接チェックすることが無効である問題を解決します
フロントエンドの開発過程で、チェックボックスが必要な状況が発生しました。ユーザー操作の利便性を考慮して、クリックイベントを DIV に配置しました。 (ここではknockout.jsが使用されています)

コードは大まかに次のようになります。

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

<div id="one" データバインド="click:clickevent">
<input type="checkbox"><span>ご質問がある場合はチェックしてください</span>
</div>

しかし、このように記述すると奇妙な現象が発生しました。マウスで div をクリックするとすべて正常でした。

しかし、マウスでチェックボックスを直接チェックするのは通常ではありません。

チェックボックスはチェックされていない状態です。チェックボックスをマウスでクリックしてチェックします。このとき、次の操作が実行されるはずです。1. div の clickevent イベントを実行します。2. イベントが実行されると、チェックボックスはチェックされた状態になります。

しかし、最終結果はチェックボックスがまだチェックされていないことです。

追跡とデバッグの結果、clickevent イベントが実行されると、チェックボックスはまだチェックされた状態ですが、clickevent の実行後に jquery コードが実行され、2 ~ 3 ステップ後にチェックボックスがチェックされていない状態に変更されます。

理由はまだ見つかっていません。 (別の場所で使用されているラジオボックスでも同様の状況が発生します)

他に方法はないので、回避策を講じる必要があります。チェックボックスをdivで覆い、マウスをクリックするとチェックボックスではなくdivがクリックされるようにし、クリックイベントを通じてチェックボックスの状態を変更します(クリックイベントにはチェックボックスの状態を変更するコードが既に含まれています)。

実装は次のとおりです。

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

<div id="1">
<div id="two" データバインド="click:clickevent"></div>
<div id="3">
<input type="checkbox"/> <span>ご質問がある場合はチェックしてください</span>
</div>
</div>

ID 2 と 3 の 2 つの div には、2 つのプロパティ (position: absolute; z-index: 1;) を設定する必要があります。

上層の div の z-index 属性は、下層の div の z-index 属性よりも大きくなっています。

上記の DIV の ID 属性は説明用です。プログラムでは、通常、class 属性が使用されます。

<<:  CSS3で線形グラデーションを実装するためのコードの詳細な説明

>>:  MYSQL の 10 の典型的な最適化ケースとシナリオ

推薦する

49 個の JavaScript のヒントとコツ

目次1. js整数の演算2. ネイティブアラートを書き換えてポップアップボックスの数を記録する3. ...

MySQLの権限とインデックスの詳細な説明

mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...

MySQL 悲観的ロックと楽観的ロックの実装

目次序文実際の戦闘1. ロックなし2. 悲観的ロック3. 楽観的ロック要約する序文悲観的ロックと楽観...

MySQL 使用仕様の概要

1. InnoDBストレージエンジンを使用する必要がありますCPU と IO のパフォーマンスが向上...

ウェブページのコメントにより IE でテキストがオーバーフローする

実験コードは次のとおりです。 </head> <body> <div ...

js データ型とその判定方法の例

js データ型基本データ型: 数値、文字列、ブール値、未定義、null、シンボル、参照データ型: オ...

JS での Reduce Fold Unfold の使用法の詳細な説明

目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...

secure_file_priv nullの問題を解決する

secure_file_priv = ' ';管理者としてcmdを実行します。 my...

Linux で独自の Nexus プライベート サーバーを構築する方法

この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...

Apache SkyWalkingのセルフモニタリングを素早く有効にする方法を説明します

1. Prometheusテレメトリデータを有効にするデフォルトでは、テレメトリは次のように無効にな...

Bootstrap Webページレイアウトグリッドの実装

目次1. Bootstrapグリッドシステムの仕組み1.1 12グリッドシステム1.2 Bootst...

Linuxにおけるumaskコマンドの使用原理と計算方法の詳しい解説

目次umask umaskの使用法原理1. umask値2. ファイルディレクトリの最大権限3. 従...

CentOS6.9 での MySQL 5.7.17 のインストールと設定のチュートリアル

CentOS6.9はMysql5.7をインストールします。参考までに、詳細は次のとおりです。 1. ...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

ウェブフロントエンド開発の細部

1 選択タグは閉じられている必要があります <select></select>...