我想只显示包含输入的搜索值的div。
因此,如果我在搜索框中键入upload login
,则应仅显示问题1和问题3.
注意:它应该适用于多个搜索输入值(例如:应搜索值upload
和login
并显示包含此值的div
注意2 :如果搜索输入如下所示,它还应显示问题1和问题3:upl log
注3 :不敏感。因此,upload
应使用内容Upload
过滤div(问题1)。
这就是我得到的:
<section id="content">
<div id="search-block">
<input type="text" id="inpSearch" placeholder="Search.." />
</div>
<div>
<div class="wrapper">
<h1>Question 1</h1>
<p>Harry Markus Upload</p>
</div>
</div>
<div>
<div class="wrapper">
<h1>Question 2</h1>
<p>Registration Append August Download</p>
</div>
</div>
<div>
<div class="wrapper">
<h1>Question 3</h1>
<p>Login July Dad</p>
</div>
</div>
$('#inpSearch').keyup(function(){
var sSearch = this.value;
$('section#content > div:not(:first-child)').hide();
$('section#content > div:contains("' + sSearch + '"):not(:first-child)').show();
});
答案 0 :(得分:2)
这里有两个问题。
upload
或Upload
,则应获取结果。<强> CODE:强>
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
消息来源:Is there a case insensitive jQuery :contains selector?
2.拆分搜索字符串并使用.each
解析,如:
<强> CODE:强>
$('#inpSearch').keyup(function(){
var sSearch = this.value;
sSearch = sSearch.split(" ");
$('section#content > div:not(:first-child)').hide();
$.each(sSearch, function(i){
$('section#content > div:contains("' + sSearch[i] + '"):not(:first-child)').show();
});
});
的 DEMO FIDDLE 强>
答案 1 :(得分:1)
试试这个
$('#content div').not("#search-block").hide();
$('#inpSearch').on('keyup',function(){
$('#content div').not("#search-block").hide();
var val = this.value;
val = val.split(" ");
var contains="";
for(var i = 0; i < val.length;i++){
contains.length >0?contains+=",div":"";
contains+=":contains('"+val[i]+"')";
}
$('#content div'+contains).show();
});
对于区分大小写,请查看this