javascript - 使用jQuery添加数据后如何执行搜索功能?

标签 javascript jquery

$(document).ready(function(){

  $(function(){
    var roles = ["Admin", "User", "Dealer", "Agent", "Buyer", "Guest", "User", "Dealer", "Agent"];

    $.each(roles, function(){
      $(".role_wrapper_2").append("<div class='roles_approval'><span>" + this + "</span></div>");
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="role_wrapper_2">
  <div class="admin2_search">
    <form>
      <input class="role-search-approval" type="search" placeholder="Enter your keyword">
    </form>
  </div>
</div>

我使用 jQuery 在页面加载时添加一些数据,并添加一个搜索框,以便用户更快地找到这些数据,并且它会逐字搜索。

例如,只需键入“a”,它将查找所有包含“a”的数据,或者键入“ab”,它将查找包含“ab”的所有数据。

如何实现这个搜索功能?

最佳答案

您可以将所有 jquery 元素推送到一个数组,然后迭代 roles 数组并执行 .indexOf()

$(document).ready(function(){

  $(function(){
    var roles = ["Admin", "User", "Dealer", "Agent", "Buyer", "Guest", "User", "Dealer", "Agent"];
    
    var elements = [];

    $.each(roles, function(){
      var element = $("<div class='roles_approval'><span>" + this + "</span></div>");
      elements.push(element);
      $(".role_wrapper_2").append(element);
    });
    
    $(".role-search-approval").on("keyup" /* or input event*/, function() {
      var value = this.value.toLowerCase();
      for(var i = 0; i < roles.length; i++) {
        if(roles[i].toLowerCase().indexOf(value) !== -1) {
          elements[i].show();
        } else {
          elements[i].hide();    
        }
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="role_wrapper_2">
  <div class="admin2_search">
    <form>
      <input class="role-search-approval" type="search" placeholder="Enter your keyword">
    </form>
  </div>
</div>
    

或者,如果您不想将它们推送到额外的数组,您可以在 keyup 上循环遍历 $(".roles_approval") 并执行 indexOf关于文本内容。

$(".role-search-approval").on("keyup" /* or input event*/, function() {
    var value = this.value.toLowerCase();
    $(".roles_approval").each(function() {
        if($(this).text().toLowerCase().indexOf(value) !== -1) {
            $(this).show();
        } else {
            $(this).hide();    
        }
    });
});

关于javascript - 使用jQuery添加数据后如何执行搜索功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31636690/

相关文章:

javascript - 如何使用自耕农生成器的分支

javascript - 如何创建一个使用本地存储的 javascript ipad 应用程序?

javascript - 检查哪个元素在另一个元素之前的函数

jquery - 谷歌浏览器 - 请求的资源上不存在 Access-Control-Allow-Origin header

javascript - 将内容添加到列表时保持滚动位置 (AngularJS)

javascript - 媒体源 API 和 mp4

javascript - Chrome 扩展程序中的功能无法运行

javascript - 如何固定绝对溢出元素相对于相对父元素的位置?

jquery - Ajax/Jquery 自动完成 JSON 数据

javascript - 保持两个 <select> 同步