jquery使用select/option中的值筛选ul/li

jquery使用select/option中的值筛选ul/li,jquery,Jquery,好的,这可能已经得到了回答,但我似乎找不到确切的解决办法。Jquery对我来说还是有点陌生,我怀疑我没有正确选择所需的元素 我有一个选择/选项,我想更改ul/li中显示的与选择/选项对应的项目。ul/li包含页面上显示的图像,我正在尝试对它们进行分类/筛选。 我有另一个php函数,可以创建图像列表并从目录中收集它们的所有文件名,但由于我不想刷新页面,我希望使用jQuery来过滤li并仅显示图像(在它们的文件名中有一个适当的匹配标记,如text=“value”在本例中,但在页面中,选定类别的实际文

好的,这可能已经得到了回答,但我似乎找不到确切的解决办法。Jquery对我来说还是有点陌生,我怀疑我没有正确选择所需的元素

我有一个选择/选项,我想更改ul/li中显示的与选择/选项对应的项目。ul/li包含页面上显示的图像,我正在尝试对它们进行分类/筛选。
我有另一个php函数,可以创建图像列表并从目录中收集它们的所有文件名,但由于我不想刷新页面,我希望使用jQuery来过滤li并仅显示图像(在它们的文件名中有一个适当的匹配标记,如text=“value”在本例中,但在页面中,选定类别的实际文件名有标记)

我这里有一把小提琴:

我认为这应该隐藏所有包含“src=”值(图像文件名)的图像的li,该值不“包含”所选类别的值:

// hide those li's that don't match
$("#ul_svg").children.not(:contains(catvalue)).hide();

也许另一种方法会起作用?

您可以使用(drumroll please…
.filter()
方法很好地过滤记录集

$('#ul_svg').children().filter({
    var self = this,
        re = new RegExp(catvalue,'g');

    return re.test(self.src);
}).hide();
这将使用正则表达式在每个对象
src
中查找与
catvalue
匹配的项,并在隐藏之前仅将集合筛选到这些对象。


所以你只想隐藏
src
属性与
catvalue
匹配的对象?是吗?很好!我意识到我忘了在img src类别名称中包含u-你不必做那部分生意,这会让它变得更加困难。。。我以前没有见过| |的用法,这是速记还是jQuery?
$(document).ready(function () {
    $("#catselect").change(function () {        
        var catvalue = this.value,
            ul = $('#ul_svg');
        ul.children('li').show();
        catvalue === 'all' || ul.children('li').filter(function() {
            return $(this).children('img')[0].src.indexOf(catvalue.slice(1)) === -1;
        }).hide();
    })
    .change();
});