2

我对 jquery 条件有疑问。

让我给你看一下代码。

这里我有“过滤器”栏:

    <div id="filter_menu">

    <label>Filter By:</label>
    <ul>
        <li>
            <a href="#" tags="all">ALL</a>
        </li>
        <li>
            <a href="#" tags="audio" class="filterFunction">audio</a>
        </li>
        <li>
            <a href="#" tags="video" class="filterFunction">video</a>
        </li>
        <li>
            <a href="#" tags="other" class="filterFunction">other</a>
        </li>
    </ul>
 </div>

这里是我想通过栏中的选项过滤的内容列表:

<ul>
    <li tags="audio video" class="li_item">
       content
    </li>
    <li tags="video" class="li_item">
       content
    </li>
    <li tags="audio" class="li_item">
       content
    </li>
    <li tags="video other" class="li_item">
       content
    </li>
    <li tags="audio other" class="li_item">
       content
    </li>
    <li tags="other" class="li_item">
       content
    </li>
</ul>

现在有 jQuery 片段:

$(".filterFunction").click(function () {

        categoryFilter = $(this).attr("tags");

        $('.item_li').each(function () {
            if ($(this).attr("tags") == categoryFilter) {
                alert('true');
                }
            else {
                alert('false');
                }
            });

     });

问题在这里:属性标签中包含多个“标签”的内容永远不会是真的!我需要一个条件,当它在属性标签中找到一个“标签”时变为真!!!

请有人可以帮助我!

非常感谢!对不起我的英语:)

4

2 回答 2

1

尝试

$(".filterFunction").click(function () {

    categoryFilter = $(this).attr("tags");

    $('.li_item').each(function () {
        var tags = $(this).attr("tags").split(' ');
        if ($.inArray(categoryFilter, tags) > -1) {
            alert($(this).attr("tags") + ': true');
        } else {
            alert($(this).attr("tags") + ': false');
        }
    });

});

演示:小提琴

于 2013-08-19T16:20:49.553 回答
0

与其$.each();循环遍历所有内容,不如使用 tags 属性来选择具有您特别寻找的键的那些,即:

var my_var = 'other';
$('.li_item[tags*="'+my_var+'"]');

然后专门与那些合作。还有多种选择器类型来完善这个概念,查看http://www.w3schools.com/jquery/jquery_ref_selectors.asp示例。上面的一个是一个外卡匹配,其中至少有“其他”。但是你可以告诉它所有,但是,只有,等等。

于 2013-08-19T16:18:37.233 回答