検索履歴を実装するjQueryプラグイン

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとおりです。

効果は以下のとおりです

コードセクション

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <title>検索履歴を実行する</title>
  <script src="js/jquery-3.4.1.min.js"></script>
  <スタイル>
   *{
    マージン: 0px;
    パディング: 0px;
   }
   #検索ボックス{
    /* 境界線: 1px 実線ライトグレー; */
    高さ: 40px;
    幅: 720ピクセル;
    位置: 相対的;
   }
   #検索入力{
    境界線: 1px 実線のライトグレー;
    境界線の半径: 5px 0px 0px 5px;
    高さ: 28px;
    位置: 絶対;
    右: 45px;
    上: 5px;
    左: 5px;
    幅: 670ピクセル;
    アウトライン: なし;
    テキストインデント: 12px;
    フォントサイズ: 12px;
    色: グレー;
   }
   #検索入力:フォーカス{
    境界線の色: rgb(252,25,68);
   }
   #検索入力:フォーカス~#その他のボックス{
    ディスプレイ:フレックス;
   }
   #検索ボタン{
    高さ: 30px;
    幅: 40px;
    境界線: なし;
    境界線の半径: 0px 5px 5px 0px;
    背景色: rgb(252,25,68);
    位置: 絶対;
    右: 5px;
    上: 5px;
    ディスプレイ: フレックス;
    コンテンツの中央揃え: 中央;
    アイテムの位置を中央揃えにします。
    カーソル: ポインタ;
   }
   #検索ボタン画像{
    幅: 25px;
    高さ: 25px;
   }
   #モアボックス{
    境界線: 1px 実線のライトグレー;
    位置: 絶対;
    上: 40px;
    左: 5px;
    右: 5px;
    高さ: 370ピクセル;
    zインデックス: 7;
    境界線の半径: 2px;
    ディスプレイ: フレックス;
    表示: なし;
   }
   #押す{
    フレックス: 1;
    /* 境界線: 1px 実線ライトグレー; */
    位置: 相対的;
   }
   #歴史{
    /* 表示: なし; */
    フレックス: 1;
    /* 境界線: 1px 実線ライトグレー; */
    位置: 相対的;
   }
   。頭{
    位置: 絶対;
    上: 0px;
    幅: 100%;
    高さ: 30px;
    border-bottom: 1px 実線ライトグレー;
    フォントサイズ: 12px;
    ディスプレイ: フレックス;
    アイテムの位置を中央揃えにします。
    テキストインデント: 12px;
    色: rgb(252,85,49);
   }
   。主要{
    位置: 絶対;
    上: 30px;
    幅: 100%;
    下: 0px;
    オーバーフロー-x:非表示;
    オーバーフロー-y: 自動;
   }
   。アイテム{
    フォントサイズ: 12px;
    高さ: 30px;
    ディスプレイ: フレックス;
    アイテムの位置を中央揃えにします。
    テキストインデント: 12px;
    カーソル: ポインタ;
   }
   .item:ホバー{
    背景色: ライトグレー;
   }
  </スタイル>
 </head>
 <本文>
  <div id="検索ボックス">
   <input id="searchinput" placeholder="c下" />
   <button id="searchbtn"><img src="img/sc.png"></button>
   <div id="morebox">
    <div id="履歴">
     <div class="head">検索履歴</div>
     <div class="main"></div>
    </div>
    <div id="push">
     <div class="head">ホットなおすすめ</div>
     <div class="main">
      <div class="item">マイクロソフトがついに JDK に対して措置を講じた</div>
      <div class="item">Xiaomi のワイヤレス充電テクノロジー</div>
      <div class="item">一般的な Linux コマンド</div>
      <div class="item">A Fei は一生懸命働いており、文章を書くのが得意です</div>
      <div class="item">毎日 jQuery プラグインを学習すれば、プラグインは不要になります。それは道徳の低下か、それとも人間性の歪みか?
     </div>
    </div>
   </div>
  </div>
 </本文>
</html>
<スクリプト>
 $(ドキュメント).ready(関数(){
  //検索をクリックするたびにキャッシュに保存されます//
  $(".item").click(function(){
   var str = $(this).text();
   $("#検索入力").val(str)
  })
   // localStorage["history"] = '[]'//キャッシュをクリアします。
  履歴を描画します。
  $("#searchbtn").click(function(){
   var str = $("#searchinput").val();
   if(str&&str!=""){
    var arr = getSession();
    arr.push(str);
    localStorage["history"] = JSON.stringify(arr);
    履歴を描画します。
   }
  })
  セッションを取得します。
  //キャッシュに基づいて履歴を検索し、検索履歴関数drawhistory(){を生成します
   var arr = getSession();
   $("#history .main .item").remove();
   arr.forEach(item=>{
    var $item = $("<div class='item'>"+item+"</div>");
    $item.appendTo($("#history .main"));
   })
  }
  //キャッシュを取得する関数 getSession(){
   var ses = localStorage["履歴"];
   var arr = ses==undefined?[]:JSON.parse(ses);
   arr を返します。
  }
 })
</スクリプト>

アイデアの説明

1. レイアウトに欠陥があります。私のレイアウトが最も適切かどうかはわかりませんが、見た目は問題ありません。
2. 次に、履歴部分はlocalStorageに保存され、適切なアクションの場所で対応するエフェクトに処理され、DOMに戻されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jQuery ベースの Baidu 検索ボックス効果コード
  • jQueryをベースにした自動検索キーワードマッチング機能を実装

<<:  Linuxでポートが開いているかどうかを確認する方法のまとめ

>>:  MySQL 5.6 のインストール手順(画像とテキスト付き)

推薦する

Jenkins初心者のためのDockerデプロイメントチュートリアルの詳細な説明

この記事では、docker 経由で Jenkins+Maven+SVN+Tomcat をデプロイし、...

Docker コンテナ アプリケーションで避けるべき 10 の悪い習慣

コンテナが企業の IT インフラストラクチャに欠かせない要素となっていることは間違いありません。コン...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

Vue+Bootstrapでシンプルな学生管理システムを実現

参考までに、vueとbootstrapを使って比較的シンプルな生徒管理システムを作りました。具体的な...

MySQL 8.0.24 バージョンのインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...

MySQLクエリ速度が遅く、パフォーマンスが低下する原因と解決策

1. データベースクエリの速度に影響を与えるものは何ですか? 1.1 データベースクエリ速度に影響を...

MySQLループは数千万のデータを挿入する

1. テストテーブルを作成する テーブル `mysql_genarate` を作成します ( `id...

IDEA で Docker プロジェクトをデプロイする手順

現在、ほとんどのプロジェクトが Docker 上にデプロイされ始めていますが、デプロイのプロセスはま...

MySQL テーブル分割後にスムーズにオンラインになる方法

目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...

Vue で SVG アイコンを導入する 2 つの方法

Vue で SVG アイコンを導入する方法Vue で svg アイコンを導入する方法 1インストール...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

CSS 属性を使用してマウス イベントをブロックする方法 (マウス クリックは上位の要素を貫通する可能性があります)

由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...

IE6 の select を div でカバーできないバグの解決方法

div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...