Jquery 根据用户输入选择包含多个类的元素

发布于 2024-09-28 09:23:28 字数 743 浏览 3 评论 0原文

可能的重复:
jQuery 多类选择器

我有一个输入字段“#q”,用户可以在其中键入搜索查询并返回一组与其类匹配的列表项。

function queryData() {
   q = $('#q').val();
   q = q.toLowerCase();
   var qs = q.split(' ');
   $('.item').fadeOut(300);
   for (n in qs)        {
   $("li[class*='" + qs[n] + "']").fadeIn(1000);
                }
} 
<li class="apple"></li> <li class="apple banana"></li> <li class="banana"></li>

我不是专家,所以上面的代码可能看起来很粗糙。到目前为止,上面的代码只能显示其类别与查询匹配的 li,而不管查询中的单词数量有多少。因此,如果我输入“apple蕉”,任何以apple或banana为类的li都会fadeIn()。如何编辑此函数,以便只有类中同时包含苹果和香蕉的 li 才会 fadeIn()?

Possible Duplicate:
jQuery multiple class selector

I have an input field '#q' where a user can type a search query and returns a set of list items whose classes match it.

function queryData() {
   q = $('#q').val();
   q = q.toLowerCase();
   var qs = q.split(' ');
   $('.item').fadeOut(300);
   for (n in qs)        {
   $("li[class*='" + qs[n] + "']").fadeIn(1000);
                }
} 
<li class="apple"></li> <li class="apple banana"></li> <li class="banana"></li>

I'm not an expert so the code above may appear crude. So far, the code above is only able to display li's whose classes match the query regardless of the number of words in the query. So, if I type in "apple banana", any li with apple or banana as class will fadeIn(). How do I edit this function so that only the li's with BOTH apple and banana in its class will fadeIn()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈甜 2024-10-05 09:23:28

如何选择具有多个类的元素?

也尝试一下:

function queryData() {
    $('.item').fadeOut(300);
    $("li."+
     (
      $('#q')
      .val()
      .toLowerCase()
      .split(/\s+/)
      .join('.')
     )
    ).fadeIn(1000);
}

How can I select an element with multiple classes?

Try this too:


function queryData() {
$('.item').fadeOut(300);
$("li."+
(
$('#q')
.val()
.toLowerCase()
.split(/\s+/)
.join('.')
)
).fadeIn(1000);
}

妖妓 2024-10-05 09:23:28

我将使用术语列表来构建单个查询,例如,

var qs = q.split(' ');
for (n in qs) {
    qs[n] = 'li.' + qs[n];
}
$(qs.join(', ')).fadeIn(1000);

这将在输入任何类的任何“li”中淡出。

引用的 jquery-multiple-class-selector 仅匹配包含 all 类的元素

编辑:刚刚看到您的编辑(需要 all 类)。在这种情况下,请尝试

$('li.' + q.replace(' ', '.')).fadeIn(1000);

I'd use the list of terms to build a single query, eg

var qs = q.split(' ');
for (n in qs) {
    qs[n] = 'li.' + qs[n];
}
$(qs.join(', ')).fadeIn(1000);

This will fade in any "li" with any class entered.

The jquery-multiple-class-selector referenced only matches elements containing all classes

EDIT: Just saw your edit (require all classes). In that case, try

$('li.' + q.replace(' ', '.')).fadeIn(1000);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文