Jquery搜索常见问题 - 轻微修改

时间:2012-07-28 19:39:26

标签: javascript jquery search

之前我问过一个问题,但我还需要更多信息。我找到了这个搜索常见问题项目的精彩片段:

http://jsfiddle.net/pT6dB/

我想找到一个包含“圆形”和“地球”的问题。但是,如果我在“圆形地球”中找到“圆形地球”,它无法找到它。我希望它是一个“AND”查询。

这是一个简单的修改吗?

2 个答案:

答案 0 :(得分:2)

您需要单独搜索每个字词,并构建查询。

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();

更新:这里有一个小提琴,添加了不区分大小写的

http://jsfiddle.net/pT6dB/

答案 1 :(得分:0)

更新了小提琴搜索案例不敏感。

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>&nbsp;</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 -->