Guest User

DOM Search

a guest
Oct 29th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function domSearch(selector, caseSensitive) {
  2.  
  3.     let element = $(selector);
  4.  
  5.     let addDiv = $("<div class='add-controls'>")
  6.         .append($("<label>Enter text:<input id='input'></label>"))
  7.         .append($("<a class='button'>Add</a>")
  8.             .on('click', addText));
  9.  
  10.     let searchDiv = $("<div class='search-controls'>")
  11.         .append($("<label>Search:</label>")
  12.             .append($("<input id='searched'>")
  13.                 .on('input', searchText)));
  14.  
  15.     let resultDiv = $("<div class='result-controls'>")
  16.         .append($("<ul class='items-list'></ul>"));
  17.  
  18.     element.append(addDiv);
  19.     element.append(searchDiv);
  20.     element.append(resultDiv);
  21.  
  22.  
  23.     function addText() {
  24.         let input = $("#input");
  25.  
  26.         let li = $("<li class='list-item'>")
  27.             .append($("<a class='button'>X</a>")
  28.                 .on('click', removeItem))
  29.             .append(`<strong>${input.val()}</strong>`);
  30.  
  31.         $(".items-list").append(li);
  32.         input.val("");
  33.     }
  34.  
  35.     function searchText() {
  36.         let searched = $("#searched").val();
  37.  
  38.         if (searched === undefined) {
  39.             searched = "";
  40.         }
  41.  
  42.         let pattern = new RegExp(searched, "gi");
  43.  
  44.         if (caseSensitive) {
  45.             pattern = new RegExp(searched, "g");
  46.         }
  47.  
  48.         let list = $(".list-item");
  49.  
  50.         for (let li of list) {
  51.             if (pattern.test($(li).find("strong").text())) {
  52.                 $(li).css("display", "");
  53.             } else {
  54.                 $(li).css("display", "none");
  55.             }
  56.         }
  57.     }
  58.  
  59.     function removeItem() {
  60.         $(this).parent().remove()
  61.     }
  62. }
Add Comment
Please, Sign In to add comment