如何过滤项目和显示项目

时间:2010-02-18 08:40:22

标签: javascript jquery input filter

这是我打算做的。假设我有一个名单列表(在DIV中)

<div class="person">
Mike Mulky
</div>

<div class="person">
Jenny Sun
</div>

<div class="person">
Jack Kickle
</div>

我想要一个文本框,用户可以在其中输入“Jenny”,并在其中过滤掉带有“Jenny”的DIV。

什么JQuery插件可以让我这样做?或者,如果你知道更容易的事情:)谢谢。

4 个答案:

答案 0 :(得分:2)

这应该这样做:

<input type="text" id="userInput" />

<script type="text/javascript">
$('#userInput').keypress(function(){
    $('div.person').hide().filter(':contains("'+this.value+'")').show();
});
</script>

答案 1 :(得分:1)

答案 2 :(得分:0)

这样的事情可以解决问题:

$('.person).each(function(idx, value) {
  if ($(value).text().match(/Jenny/)) {
     // value now holds the element that contains Jenny
  }
});

答案 3 :(得分:0)

尽管:contains()选择器可能完全符合您的要求,但您可能需要(在某些情况下)将therm与更精细的颗粒控制匹配(不区分大小写,从头开始等)。

HTML

<input type="text" id="search" />
<ul id="searchable">
    <li>Anna</li>
    <li>Jenny</li>
    <li>John</li>
    <li>Kyle</li>
</ul>

的jQuery

$('#search').on('keyup', function(e) {
    var search = $(this).val().toLowerCase();
    $('#searchable').children().each(function() {
        $(this)[search && $(this).text().toLowerCase().match('^' + search) ? 'show' : 'hide']();
    });
});

这是fiddle