Jquery 如何使用文本输入值对列表进行排序?

Jquery 如何使用文本输入值对列表进行排序?,jquery,html,sorting,filter,Jquery,Html,Sorting,Filter,我的HTML是一个列表,如下所示: <ul class="friend_list"> <li> <a href="#">Krishna</a> <a href="#">Karan</a> <a href="#">Ram</a> <a href="#">Hari</a> </li> &l

我的HTML是一个列表,如下所示:

<ul class="friend_list">
    <li> 
        <a href="#">Krishna</a>
        <a href="#">Karan</a>
        <a href="#">Ram</a>
        <a href="#">Hari</a>
    </li>
</ul>

<input type="text" name="sort" value="Search" id="sort">
在这里,当用户在输入文本
#sort
中输入任何字符串时,它应该根据匹配对值列表进行排序。比如,如果我在输入
Krishna
中输入
K
,那么
Karan
列表应该显示,而
Hari
应该隐藏。当我再次输入
H
Hari
时,
Hari
li
应显示,其他人应隐藏

#sort
键向上函数应该像SQL
一样过滤结果,就像
操作符一样


有人能帮我找到解决方案吗?

您没有提供任何代码,我怀疑是否有人会为您提供这些代码。下面是一段代码,它可能会满足您的需求:
如果你不太熟悉编程,我建议你为此使用jQuery插件。

你没有提供任何代码,我怀疑是否有人会为你这样做。下面是一段代码,它可能会满足您的需求: 如果您不太熟悉编程,我建议您为此使用jQuery插件。

这里有一个想法:

 $("#sort").keyup(function(){
      var v = $(this).val();
      if(v.length==0)
      {    $("a").show();}
      else
      {
      $("a").each(function(){
          if($(this).text().indexOf(v)==0)
              $(this).show();
          else
              $(this).hide();
      })
      }
  }) ;

改变

if($(this).text().indexOf(v)==0) 

要从“以开头”更改为“包含”,这里有一个想法:

 $("#sort").keyup(function(){
      var v = $(this).val();
      if(v.length==0)
      {    $("a").show();}
      else
      {
      $("a").each(function(){
          if($(this).text().indexOf(v)==0)
              $(this).show();
          else
              $(this).hide();
      })
      }
  }) ;

改变

if($(this).text().indexOf(v)==0) 


若要从以开头更改为包含

可能的重复项,是否只希望名称的第一个字母?或者应该像
letter%
%letter%
那样。这是一个要求,它只有一个字母吗?这不是一个排序,因为你隐藏无关的项目。这是一个过滤器。我想要%letter%@spokeye的可能的副本。您只想要名称的第一个字母吗?或者应该像
letter%
%letter%
那样。这是一个要求,它只有一个字母吗?这不是一个排序,因为你隐藏无关的项目。这是一个过滤器。我要%letter%@Spokey