検索履歴を実装する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 のインストール手順(画像とテキスト付き)

推薦する

HTML でシンプルな ListViews 効果を実装するためのサンプル コード

シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...

Django+vue 登録とログインのサンプルコード

登録するフロントエンドは、vue の axios を使用して値を渡し、取得したアカウントとパスワード...

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...

Mysql接続数の設定と取得方法

接続数を取得する --- 最大接続数を取得します。SHOW VARIABLES LIKE '...

VMWare12 グラフィックチュートリアルで Apple Mac OS X をインストールする

1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...

MySQLバックアップとリカバリの実践に関する詳細な説明

1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...

メタタグを簡単に説明すると

META タグは、一般的に タグと呼ばれ、HTML Web ページのソース コード内の重要な HTM...

大きな MySQL テーブルに列を追加する方法

質問は https://www.zhihu.com/question/440231149 から参照さ...

Redux Toolkit で Redux を簡素化する方法

目次Redux Toolkitが解決する問題何が含まれていますか? Redux Toolkit AP...

Bootstrapグリッドの垂直および水平配置の詳細な説明

目次1. Bootstrap グリッドレイアウト2. 垂直方向の配置2.1 行タグの垂直方向の配置を...

Centos7 での Rsync+crontab 定期同期バックアップ

最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...

docker runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...

MySQL レプリケーションの原理と実際のアプリケーションの詳細な説明

この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...