この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
フロントエンド設計とウェブ
›
HTML/CSS/JavaScript
›
マウスがdiv内の別のレイヤーに移動すると、マウスアウトがトリガーされます
眺める:
8782
|
答える:
0
[JavaScript]
マウスがdiv内の別のレイヤーに移動すると、マウスアウトがトリガーされます
[リンクをコピー]
クズども
掲載地 2018/12/17 14:57:53
|
|
|
|
DIV要素の話が出たところで、内部にはIMG要素とSPAN要素があります。これら2つの内部要素の配置は気にしないでください。ここは私が議論したい話題ではありません。
特殊効果を得るためには、TDのonmouseoverとonmouseoutイベントを使う必要があり、テストすると次のような状況が見つかります。
マウスがDIV内に入るとonmouseoverイベントが発生します。 次に、マウスをDIV内のIMGまたはSPAN要素に移動させます。マウスがDIVの外側に移動したとは思えませんが、奇妙なことにonmouseoutイベントがトリガーされ、onmouseoverイベントも即座に発生します。
これは私が望んでいるものではありません。では、内部要素から外部要素へのJavascrip{filtering}tイベントの干渉をどうやって「ブロック」できるのでしょうか?
こちらは2つの方法です:
1. setTimeout
マウスが内側の要素を移動し、外側の要素のonmouseoutイベントをトリガーすると、外側の要素のonmouseoverも即座にトリガーされるため、外側要素のonmouseoutイベントを実行する動作を短時間遅らせて実行し、その後onmouseoverイベントでclearTimeoutメソッドを実行して、内部要素によるイベント干渉を避ける必要があります。
具体的な実行プロセスについては以下の図(縦点線は時間を表します)をご覧ください。
これは賢いアプローチで、onmouseoutがトリガーされると実質的なメソッドはすぐに実行されるのではなく、短時間待機します。 この時間中にonmouseoverイベントが即座にトリガーされた場合、内部要素からの干渉によりonmouseoutイベントがトリガーされていることはほぼ確実なので、onmouseoverイベントでclearTimeoutを使って遅延メソッドの実行を防ぎましょう。
2. 包含
onmouseover時に次の判断を行い、結果が真になったらメソッド本体を実行します。
ログインが見えます。
onmouseout時に次の判断を行い、結果が真になったらメソッド本体を実行します。
ログインが見えます。
以下は上記の2行のコードの意味の説明です:
IEでは、すべてのHTML要素が、現在の要素に指定された要素が含まれているかどうかを判定するcontainメソッドがあります。 この手法を使って、外部要素のイベントが内部要素によってトリガーされるかどうかを判定し、内部要素が不要なイベントを引き起こした場合は無視します。
event.fromElementはonmouseoverおよびonmouseoutイベントがトリガーされた際にマウスが離れる要素を指し示し、event.toElementはonmouseoverおよびonmouseoutイベントがトリガーされた際にマウスが入る要素を示します。
したがって、上記の2行のコードの意味は以下の通りです:
onmouseoverイベントがトリガーされると、マウスが残した要素が現在の要素の内部要素かどうかを判定し、もしそうであればこのイベントを無視します。
onmouseoutイベントが発生した際、マウスが入力した要素が現在の要素の内部要素かどうかを判断し、もしそうならこのイベントを無視します。
こうすることで、内側の要素が外側の要素のオンマウスオーバーおよびオンマウスアウトのイベントに干渉しません。
しかし問題は、非IEブラウザはinclude関数をサポートしていないことです。しかし、今度はinclude関数の関数がわかったので、非IEブラウザ向けのIncludeサポートを追加するために以下のコードを追加できます。
ログインが見えます。
上記の方法はFirefoxとは互換性がありません:
ポイントはjQueryです:
jクエリ
mouseoutの代わりにmouseleaveを使ってください
、上記のことが起こらないようにする。
また、マウスオーバーは繰り返しトリガーされるので、代わりにmouseenterを使ってください。
完璧な解決策~
先の:
jQueryリストはアクティブチェックを1つしか許しません
次に:
ウェブアプリケーションフレームワークTapestry
関連記事
•
WinIoはキーボードとマウスのシミュレーションを実装するために使われます
•
マウスの動きを記録(スクリーンセーバーや広告カルーセルとして使用可能)
•
マウスコネクター(パワフル)はその日使うことができます。必ず回収してください!
閲覧したセクション
ジャワ
リソースの共有
レジャー灌漑
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com