如何使用Jquery包含函数在UL LI中获取精确的字符串

时间:2015-08-24 08:18:09

标签: jquery html

我在jquery中遇到了一个问题。所以,我刚刚在这里注册。我需要你的帮助。

我正在使用 keyup 功能来匹配 ul li 字符串。根据我的类型,列表项向下/向上滚动到位于li的特定文本。但问题是当 li 双文

  1. 气球
  2. 气球
  3. 然后包含功能在气球上停止。而我希望结果只有气球文本。

    基本上我希望搜索应该从第一个字母开始执行。

    这是我的代码:

    <ul>
        <li data-id="a">Air balloons</li>
        <li data-id="b">Balloons</li>
        <li data-id="l">List Items</li>
        <li data-id="i">Items</li>
    </ul>
    
    $(function(){
        $('input#search').keyup(function (e) {
            var searchValue = $(this).val();
            jQuery.expr[':'].contains = function (a, i, m) {
                return jQuery(a).text().toUpperCase()
                        .indexOf(m[3].toUpperCase()) >= 0;
            };
            var containText = $('li:contains(' + searchValue + ')');
            var id = containText.attr('data-id');
            alert(id);
        });
    });
    

    使用jsfiddle

    进行更新

    JSFIDDLE DEMO

1 个答案:

答案 0 :(得分:0)

如果你想要精确的文字搜索,你可以使用这样的东西:

$(function() {
  $('input#search').keyup(function(e) {
    var searchValue = $(this).val();
    if (searchValue.length == 0) {
      $('li').css('background-color', 'white');
    }
    $('li').each(function() {
      if ($(this).text().toLowerCase() == searchValue.toLowerCase()) {

        $(this).css('background-color', 'red');
        $(this).siblings().css('background-color', 'white');
        console.log($(this).attr('data-id'));

      }
    });
  });
});

此处的冗余线(着色/移除颜色)仅用于演示目的。 演示:http://jsfiddle.net/8xwchLg3/1/

所以,基本上 - 你想检查列表项的text()属性,如果li的文本等于你的搜索值,则用每个()迭代li,&gt;做你想做的。