首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按数据-属性单击隐藏元素

按数据-属性单击隐藏元素
EN

Stack Overflow用户
提问于 2014-08-26 17:45:21
回答 3查看 1.7K关注 0票数 0

我想做一些过滤的jQuery这是我的超文本标记语言

代码语言:javascript
复制
<ul id="filters" class="filter nav nav-pills">
      <li><a class="filter_link" href="#" data-category="7">Shop</a></li>
      <li><a class="filter_link" href="#" data-category="8">Portal</a></li>
      <li><a class="filter_link" href="#" data-category="9">Website</a></li>
</ul>

<div class="col-lg-3 filter_div" data-postcat="9">
   some html
</div>

<div class="col-lg-3 filter_div" data-postcat="8">
   some html
</div>

这是我的JS

代码语言:javascript
复制
jQuery(document).on('click', '.filter_link', function() {
    var catId = jQuery(this).data("category");
    jQuery('.filter_div').each(function(i, el) {
        var termId = jQuery(el).data('postcat');

    });
});    

我不能理解如果我点击ul > li >a属性,我怎么能通过点击来隐藏和显示元素,例如8.我想隐藏所有带有data-category不是8的div

EN

回答 3

Stack Overflow用户

发布于 2014-08-26 17:51:26

您可以使用attribute selector

代码语言:javascript
复制
jQuery(document).on('click', '.filter_link', function() {
    var catId = jQuery(this).data("category");
    //use attribute selector to find the items to be shown
    var $targets = jQuery('.filter_div[data-postcat="'+catId+'"]').show();
    //hide all the other items
    jQuery('.filter_div').not($targets).hide();
});  

演示:Fiddle

票数 1
EN

Stack Overflow用户

发布于 2014-08-26 17:58:03

你可以这样做:

代码语言:javascript
复制
$(document).on('click', '.filter_link', function() {
    var catId = $(this).data("category");
     //hide all div
    $('.filter_div').hide();
    //show only specific div
    $(".filter_div[data-postcat='" + catId +"']").show();

});

fiddle

票数 0
EN

Stack Overflow用户

发布于 2014-08-26 17:59:33

您必须使用jQuery attribute selector过滤列表

JavaScript

代码语言:javascript
复制
function showCategory(categoryId) {
    var $allDivs = jQuery('.filter_div[data-postcat]');
    var $selectedDiv = $allDivs.filter('[data-postcat='+categoryId+']');

    $allDivs.hide();
    $selectedDiv.show();
}

jQuery(document).on('click', '.filter_link', function(event) {
    var categoryId = event.target.getAttribute('data-category');

    showCategory(categoryId);

    event.preventDefault();
});

HTML

代码语言:javascript
复制
<ul>
      <li><a class="filter_link" href="#" data-category="7">Shop</a></li>
      <li><a class="filter_link" href="#" data-category="8">Portal</a></li>
      <li><a class="filter_link" href="#" data-category="9">Website</a></li>
</ul>

<div class="filter_div" data-postcat="9">
   category 9
</div>

<div class="filter_div" data-postcat="8">
   category 8
</div>

下面是一个可以正常工作的JSFiddle:http://jsfiddle.net/pomeh/e04kxbhc/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25502712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档