【发布时间】:2012-07-28 19:39:26
【问题描述】:
我之前问过一个问题,但我需要更多信息。我发现这个很棒的 sn-p 用于搜索常见问题:
我想找到一个包含“round 和”Earth“的问题。但是,如果我在looks 中键入“round Earth”,它会专门针对“round Earth”而无法找到。我希望它是一个“AND”查询。
这会是一个简单的修改吗?
【问题讨论】:
标签: javascript jquery search
我之前问过一个问题,但我需要更多信息。我发现这个很棒的 sn-p 用于搜索常见问题:
我想找到一个包含“round 和”Earth“的问题。但是,如果我在looks 中键入“round Earth”,它会专门针对“round Earth”而无法找到。我希望它是一个“AND”查询。
这会是一个简单的修改吗?
【问题讨论】:
标签: javascript jquery search
您需要单独搜索每个术语,并建立一个查询。
var term = $(this).val().trim();
var words = term.split(' ');
var selector = "#result LI";
for(var i = 0; i < words.length; i++){
selector += ':contains(' + words[i] + ')'
}
$(selector).show();
更新:这是为您准备的小提琴,增加了不区分大小写的功能
【讨论】:
更新了 Fiddle 以搜索不区分大小写。
http://jsfiddle.net/pT6dB/161/
$(document).ready(function() {
$('LI STRONG').click(function(e) {
e.preventDefault(); // disable text selection
$(this).parent().find('EM').slideToggle();
return false; // disable text selection
});
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;
};
$('#search').keyup(function(e) {
var s = $(this).val().trim();
if (s === '') {
$('#result LI').show();
return true;
}
$('#result LI:not(:contains(' + s + '))').hide();
$('#result LI:contains(' + s + ')').show();
return true;
});
}); // end document ready
#faq EM {
display:none;
}
#faq LI STRONG {
font-weight:normal;
color:#246;
text-decoration:underline;
cursor:pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="faq">
<p><label>Search</label><br />
<input id="search" value="" size="30" /></p>
<p> </p>
<ul id="result">
<li><strong>How round is the Earth?</strong><br /><br /><em>
Very round.
<br /><br /></em></li>
<li><strong>How rectangular is paper?</strong><br /><br /><em>
Very rectangular.
<br /><br /></em></li>
</ul>
</div><!-- #faq -->
【讨论】: