ホームページ ウェブフロントエンド htmlチュートリアル [bootstrap] の [tooltip] にある bugs_html/css_WEB-ITnose ではないバグに関する私の個人的な意見

[bootstrap] の [tooltip] にある bugs_html/css_WEB-ITnose ではないバグに関する私の個人的な意見

Jun 24, 2016 am 11:30 AM

まず、この問題の背景について話させてください。

ページ内に div があります。この div の右上隅 (または他の場所) に × アイコンがあります (このアイコンはツールヒントを追加します)。このような「クリックして削除」という同様の単語をクリックして、この div に対して delete() のような削除操作を実行します。

その後、問題が発生しました。この div が削除されたため ()、生成されたツールチップに対応する × アイコンも削除されました () が見つかりませんでした。そのため、対応するマウスアウト (おそらく、mouseleave イベント、ブートストラップを参照してください)ソース コードに手がかりが見つかりませんでした。おそらく、これら 2 つのイベントのうちの 1 つがトリガーされず、ツールチップが常に表示されることになります。これはバグです。

言葉で言うことはあまりありませんが、上の図の方が直感的です。

最初にコードを添付します:

[コード部分] (ブートストラップ ファイルと内部の js はローカルにあるため、自分で実行してみたい場合は変更する必要があります):

<!DOCTYPE html><html lang="zh-CN"><head>    <title>test</title>    <meta charset="utf-8">    <link rel="stylesheet" href="./bootstrap/css/bootstrap.min.css">    <link rel="stylesheet" href="./font-awesome/css/font-awesome.min.css">    <script src="./bootstrap/js/jquery-1.11/jquery.min.js"></script>    <script src="./bootstrap/js/bootstrap.min.js"></script></head><body>    <div style="width:70%;margin:50px auto;height:300px;">        <a id="test01" href="javascript:;" data-toggle="tooltip" title="反馈错误" data-placement="top" data-container="body">            <span  class="fa fa-bug"></span>        </a>        <a id="test" href="javascript:;" data-toggle="tooltip" title="点击移除" data-placement="top" data-container="body">            <span  class="fa fa-times"></span>        </a>    </div>    <script>        $("[data-toggle='tooltip']").tooltip();                $("#test").on("click",function(){            var $this = $(this);            $this.remove();            $(".tooltip.fade.top.in").remove();//这行代码是我个人用来解决这个问题而添加的        })    </script></body></html>
ログイン後にコピー

Firefox、ページエフェクトと対応するコード (上に添付したコードよりも重いように見えますが、より直感的です)

対応するアイコンの上でマウスをクリックします (ブートストラップによって提供されるスタイルと JS を使用してツールチップが追加されています)フレームワーク))、同時にツールチップに対応する div の ID に注目してください

カーソルを移動した後、対応する × アイコンにフォーカスし、ID を比較すると、ID が変更されていることがわかります

ここで、もともとブートストラップのソースコードを見て、ツールチップのソースコードにどのように書かれているかを見て、問題を根本から解決するつもりでした。

一部見た後、今の経験の浅さには少しストレスを感じました。

しかし、少なくともこの観点からは、生成されるツールチップの ID はランダムであり、ツールチップの非表示は「display:none」の非表示ではなく、「remove()」の非表示です。

追記:私の個人的な理解ですが、それが正しいかどうかはわかりません。誰かが私にアドバイスをくれることを願っています。

以下に示すように、バグを再現してみましょう。

次に、そのコード行のコメントを解除して、私独自の方法で試してみましょう。

上記は私の方法で得られた最終結果です。

× アイコンを削除し、バグ アイコンの上にマウスを移動すると、ツールチップは正常に表示されます。少なくとも、スクリーンショットに関しては、スペースをとりすぎるため、まだアップロードされていません。

追記: この方法を同僚に話しました。ツールチップは完全なセットであるブートストラップによって提供されるフレームワークを使用しているため、変更すると他の場所で問題が発生するのではないかと心配なので、初心者の私は変更します。これはあきらめてください。方法はあります。マスターが指導して、より良い方法を考え出すことを願っています。

【まとめ】

最後に、もう一言。

最初のアイデアは、削除する要素を通じて対応する生成されたツールチップを見つけて、それを非表示にすることでした(表示:なし)。後で、それが見つからないことがわかりました。

IDは変わり続けるから(個人的な推測ですが、ソースコードを読むのがちょっとストレスなので検証はしていません。少なくともIDはランダムに生成されるべきです。ルールがあるとしても、本当にわかりません)、最初の 2 つのスクリーンショットで述べたように、クラスを通じて検索しても一意のラベルが見つからない可能性があります。同じページに他のラベル要素があるためです。ツールチップも使用できます。

ローカルで試してみたところ、主な理由は、生成されたツールチップが削除されていないことです (上記のスクリーンショットで述べたように、「非表示」にする必要がない理由は、ツールチップが display:none をプロンプトするためではなく、直接Remove() このヒント)。

そこで考えたのですが、ツールチップが追加された要素をカーソルが通過するたびに、それに応じてカーソルが削除されるたびに、対応するツールチップがremove()されるようです

そこで、これを思いつきました。メソッド: 対応する要素をremove()した後、ページ上で$("div.tooltip.fade.in")を見つけて、理論的には他の要素に影響を与えません。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles