我想知道是否有人可以帮助我解决我遇到的 jquery 问题。下面的代码是我在另一篇文章中找到的一个片段,但我希望稍微调整一下
jQuery
$(document).ready(function() {
$('#criteria').on("input", function(e) {
var words = $(this).val().toLowerCase().match(/\S+/g);
if (!words) {
$('.links li').show();
} else {
$('.links li').each(function() {
var text = $(this).text().toLowerCase();
var show = false;
$.each(words, function(i, word) {
show = show || Boolean(~text.indexOf(word));
});
$(this).toggle(show);
});
}
});
}); // end document ready
和 HTML
<ul class="links">
<li><a href="#">link 1</a></li>
<li><a href="#">link 2</a></li>
<li><a href="#">link 3</a></li>
<li><a href="#">link 4</a></li>
</ul>
现在这就像它应该的那样工作,它在输入字段中查找匹配项,并通过隐藏没有匹配项的链接来相应地过滤结果。我想要做的而不是使用切换是向 li 元素添加一个类,其中没有匹配项以使它们使用 css 淡化。
我试过使用 $(show).addclass(); 而不是 $(this).toggle(show); 但它似乎没有做任何事情,我假设因为变量 show 没有被使用但是当我尝试对变量显示的一类效果时它什么也没做