我在jquery中遇到了一个问题。所以,我刚刚在这里注册。我需要你的帮助。
我正在使用 keyup 功能来匹配 ul li 字符串。根据我的类型,列表项向下/向上滚动到位于li的特定文本。但问题是当 li 有双文时
然后包含功能在气球上停止。而我希望结果只有气球文本。
基本上我希望搜索应该从第一个字母开始执行。
这是我的代码:
<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
进行更新答案 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;做你想做的。