我试图隐藏所有<li>
元素,然后只显示那些<li>
包含<p>
与输入/搜索字段的值匹配的文本的子元素。
HTML:
<input id="search" type="text" placeholder="Search">
<ul class="items">
<li class="item">
<p class="keywords" style="display: none;">skins, hair</p>//keywords
<a class="thumb" href="#"><img src="koalahat.jpg"></a>
</li>
<li class="item">
<p class="keywords" style="display: none;">hair</p>
<a class="thumb" href="#"><img src="goosehat.jpg"></a>
</li>
</ul>
JS:
$('#search').keyup(function(){
var typed = $(this).val(); //get the input field value
$('.items li').hide() //hide all LIs...
$('.items li').filter(function(){ //filter all LIs that...
$('.items li p.keywords:contains(typed)').parent().show(); //... that contain the typed keywords, and show them.
});
console.log(typed);
})
我不知道为什么更改$('.items li p.keywords:contains(typed)')
为$('.items li p.keywords:contains("skins")')
返回所需的输出,前者没有。