1

在开始之前,这是搜索包含指定文本的 div的“第 2 部分”

嘿。我得到了一个 div 列表,每个 div 都有几个 div(样式),它看起来像这样:

<body>
<div class='divlist'>

<div>
    <div>abc</div><div>def</div><div>ghi</div>
</div>

</div>
</body>

body标签中我也有一个搜索(<input type='text' id='search' />

和我的jQuery:

$('#search').on('input', function(){
    var text = $(this).val();
    $('.divlist div').show();    
    $('.divlist div:not(:contains(' + text + '))').hide();
});

现在,如果我搜索abc它将删除包含defand的 div ghi,尽管搜索与 div 匹配(其中包含 abcdefghi 的那个)。所以:如果没有匹配项(例如,j),我将如何创建一个删除主 div 的搜索功能,并显示包含其他 div 的 div 内的所有 div,无论有多少 div 匹配。

提前致谢。

附言。如果有人知道更好的标题,请随时更改

4

1 回答 1

1

不是过滤所有div元素,而是过滤.divlist元素:

$('.divlist:not(:contains(' + text + '))').hide();

或者他们的直系div子女使用子选择器:

$('.divlist > div:not(:contains(' + text + '))').hide();

您还可以使用.filter()比昂贵的选择器更有效的方法:not(:contains())

$('.divlist > div').hide().filter(function() {
    return $(this).text().indexOf(text) > -1;   
}).show();
于 2013-09-30T20:46:35.573 回答