【问题标题】:How to remove elements of a certain class inside a parent element Jquery如何删除父元素Jquery中某个类的元素
【发布时间】:2015-02-07 18:02:14
【问题描述】:

我有一个包含类别按钮的跨度,当单击时,子类别按钮会添加到父跨度中。这样做的目的是,当再次单击类别按钮时,如果子类别已被填充,则应将其删除,如下所示:

$('.catBtns').on('click', function() {
    var catId = parseInt(this.id);
    if ($('#' + catId).parent().find('button').length <= 1) {
        $.each(data.category[catId].subcategory, function(i) {
            $('<button class="subcatBtns" id="'
              + data.category[catId].subcategory[i].subcategoryId + '">'
              + data.category[catId].subcategory[i].subcategoryName.split('<--name-->')[currentLang]
              + '</button>').appendTo($('#' + catId).parent());
            i++;
        });
    } else {
        $('#' + catId).parent().remove('.subcatBtns');
    }
});

到目前为止还没有运气。为什么我无法从类别按钮的父元素中删除 subcatBtns 类的所有元素? remove() 方法的 jquery API 有这个例子:

$( "div" ).remove( ".hello" );

是不是因为之前的 parent() 方法?我应该只向跨度添加一个特定的 ID,而不是通过孩子的 ID 选择它吗? HTML 很简单,在这里:

   <nav id="nav">
        <img src="img/resources/logo.png" alt="logo" id="logoMenu">
        <span id="span0" class="catSpan">
            <button class="catBtns" id="0">EN-0</button>
            <button class="subcatBtns" id="000">EN-000</button>
            <button class="subcatBtns" id="001">EN-001</button>
        </span>
        <span id="span1" class="catSpan">
            <button class="catBtns" id="1">EN-1</button>
        </span>
        <span id="span2" class="catSpan">
            <button class="catBtns" id="2">EN-2</button>
        </span>
        <span id="span3" class="catSpan">
            <button class="catBtns" id="3">EN-3</button>
        </span><span id="span4" class="catSpan">
            <button class="catBtns" id="4">EN-4</button>
        </span>
    </nav>

【问题讨论】:

  • 请显示 HTML 结构。当我们可以清楚地看到您正在处理的 HTML 结构时,我们可以提供最好的 jQuery 选项。我们必须知道事物之间的相对关系。
  • 这段代码中似乎没有任何跨度...
  • 您的 HTML 不包含任何 subcatBtns 类...
  • 跨度是用里面的类别按钮创建的。子类别按钮是在点击时创建的。
  • 当你可以display:none他们并使用点击事件来更改该对象时,为什么要创建它们

标签: javascript jquery html


【解决方案1】:

.remove() 方法删除调用它的元素,可选地由选择器过滤。在行中

$('#' + catId).parent().remove('.subcatBtns');

您定义一组匹配的元素,其中仅包含一个元素(按钮容器),然后使用选择器 ".subcatBtns" 在此集合上调用 .remove()。由于容器与选择器不匹配,因此不会删除任何内容。

试试吧:

$('#' + catId).parent().find('.subcatBtns').remove();

【讨论】:

  • 这就像一个魅力!感谢您的解释,这更有意义。我需要先选择类的子元素,然后删除它们。
猜你喜欢
  • 2018-01-17
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多