jQuery Live Search:指定可搜索元素



我在使用jQuery Live Search插件时遇到了一些问题,指定了哪些元素应该是可搜索的。我创建了几个jsFiddles来演示这个问题。

注意:jQuery Live Search 的默认用法只是过滤单词列表(demo)。但是,我想要的用法从列表项中的内容块中过滤:

<li>
    <h2>Australia</h2>
    <p>Lorem ipsum dolor sit amet.</p>
<li>

那么问题出在哪里呢?

<li>定位为可搜索元素工作正常 - 其中的所有内容都可以在实时搜索结果中搜索。

但是,尽管计数器显示正确的结果,但以<h2>(我唯一想要搜索的部分)为目标会导致结果列表中断(所有结果都隐藏)。

如何复制?

查看这个工作小提琴,插件将<li>作为可搜索区域。如您所见,搜索国家/地区(区分大小写)可以正常工作(<h2>),以及搜索返回所有 4 个结果的"Lorem"(<p>也是可搜索的)。

我想做的是只使<h2>可搜索,而不是<li>内的任何其他内容。这是那套小提琴。现在,在搜索一个国家/地区时,会显示正确的结果编号,但该结果的<li>仍然隐藏不正确。正确搜索"Lorem"不会返回任何结果,结果编号为 0。

似乎当<li>中的元素成为目标时,它会破坏<li>本身的显示/隐藏。这是插件的错误还是我做错了什么?

非常感谢!

问题出在这个回调上:

on.results(function(results) {
    $('.no-filter-results').hide();
    $('.filter-results li').hide();
    results.show();
});

results 参数包含对目标元素(在本例中为 h2 元素)的引用。

您将所有li元素设置为首先隐藏在此行中:

$('.filter-results li').hide();

然后仅设置h2元素以使用此行可见:

results.show();

显然这是行不通的,因为父li仍然隐藏。

解决方案是在结果中显示h2的父li,如下所示:

results.parent('li').show();

这就解释了为什么当您之前定位li元素时它起作用。

相关内容

  • 没有找到相关文章

最新更新