jQuery - 在父级中按类别选择具有未知名称的元素

时间:2016-10-28 12:37:00

标签: jquery jquery-selectors

感谢你帮助我。我有工作代码,删除以前选择的元素中的类:

$('.tag-list-item').click(function () {
  $('.tag-list-item').each(function (i, elem) {
    console.log(elem);
    $(elem).removeClass('tag-list-chosen');
  });
});

但是现在我需要重建它以仅在具有共同父元素的元素中删除类。 (原因是,在开始时,这段代码帮助我通过一个参数选择块,现在增加了参数量)。试图这样做,而不是工作:

$('.tag-list-item').click(function () {
  $('.tag-list-item').parent('.tag-list-item', this).each(function (i, elem) {
    console.log(elem);
    $(elem).removeClass('tag-list-chosen');
  });
});

整个HTML都是这样的。首先,我有两个列表(可能还有更多,我想创建通用工作代码)和标签:

<div class="row no-width-margin" id="selector-theme">
   <h5 class="tag-title">Tag group 1</h5>
      <ul class="tag-list">
         <li class="tag-list-item" data-theme="all-theme">All themes</li>
         <li class="tag-list-item" data-theme="holidays-theme">Holidays</li>
         <li class="tag-list-item" data-theme="spring-theme">Spring</li>
         <li class="tag-list-item" data-theme="new-year-theme">New year</li>
      </ul>
</div>
<div class="row no-width-margin" id="selector-sector">
   <h5 class="tag-title">Tag group 2</h5>
   <ul class="tag-list" style="padding: 0">
      <li class="tag-list-item" data-sector="all-sector">Все отрасли</li>
      <li class="tag-list-item" data-sector="cinema-sector">Movies</li>
      <li class="tag-list-item" data-sector="entertainment-sector">Entertainment</li>
   </ul>
</div>

和包含数十张卡的大块,每张卡都有这种结构(具有不同的数据属性内容):

<div class="file-box" data-theme="all-theme,holidays-theme" data-sector="all-sector,cinema-sector">
  <div class="file">
    <div class="image">
    </div>
    <div class="file-name">
    </div>
  </div>
</div>

当我点击列表中的标签时,没有选定标签的卡片正在消失。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

更新:此答案与问题编辑 不匹配“当我点击列表中的标记时,没有选定标记的卡片正在消失。

只要您的“共同父母”有一个类或其他方式来识别,您就可以使用$(this).closest("parentclass"),例如:

$('.tag-list-item').click(function () {
    $(this).closest(".tag-list-parent")
           .find(".tag-list-item")
           .each(function (i, elem) {
                console.log(elem);
                $(elem).removeClass('tag-list-chosen');
           });

要解决这个问题:

var mutualparent = $(this).closest(".parent-class");
va alltaglistsinparent = mutualparent.find(".tag-list-parent")

如果您没有课程,可以使用包含dev,例如:

$(this).closest("div")...

或其他相关元素

$(this).closest("ul")...

如果他们都是兄弟姐妹,即所有人都处于同一级别,那么你可以使用上面的parent(),或者你可以使用.siblings()有或没有.andSelf()来包括this

$('.tag-list-item').click(function () {
    $(this).siblings(".tag-list-item").andSelf()
           .each(function (i, elem) {
                console.log(elem);
                $(elem).removeClass('tag-list-chosen');
           });