【问题标题】:removeClass & addClass jquery删除类和添加类 jquery
【发布时间】:2017-12-21 01:02:01
【问题描述】:

我对 jquery 比较陌生,尝试解决以下问题

我想构建一个树形图,参见。

当单击第一个类别中的项目时,会弹出第二个类别(在 div #category_2 中)。第 3 类也一样。之后每次点击类别 1 或 2 都应删除附加的第 2 和第 3 项,并从第 2 和第 3 类别中附加所选项目。

这是我在打开类别 3 (=subMenu2) 中的项目的示例中尝试的:

function makeType(subMenu2, root) {
  if (typeof root === 'undefined') {
    root = $('#category_3');
  }

  var ul = $("<ul></ul>");

  if (root.children().length > 0) {
    root.removeClass(ul)
  }
 
  root.append(ul);

  for (var k = 0; k < subMenu2.length; k++) {
    var li = $("<li class='category-selection-list-item is-subleaf'></li>");
    ul.append(li);
    var a = $("<a href='#' data-param='" + array[array_i].subMenu[submenu_i].subMenu2[k].param + "'>" + array[array_i].subMenu[submenu_i].subMenu2[k].type + "</a>");
    li.append(a);
    console.log(k);
  }
}

虽然 removeClass 元素停止添加更多项目,但它不会删除以前添加的项目。我试图在论坛中找到合适的答案,但这并没有帮助。那么,我该如何解决这个问题呢?

【问题讨论】:

  • ul 中的removeClass(ul) 是什么?
  • 这里也使用了 ul .append(ul);,但声明你的 var 命名令人困惑
  • 您不应该在if() 中使用root 而不是$('#category_3') 吗?
  • removeClass 的参数应该是一个字符串。 ul 是一个 jQuery 对象,你想在那里做什么?

标签: javascript jquery appendchild removechild


【解决方案1】:

要删除之前添加的项目,需要清空root

if (root.children().length > 0) {
    root.removeClass('ul');
    root.empty();
}

【讨论】:

  • 这很简单,就像一个魅力。谢谢!
【解决方案2】:
addClass("className") 
removeClass("className")

如果你想隐藏一些节点,就用这个:

 $("#someNode").hide()

【讨论】:

    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2011-08-21
    • 2018-11-13
    相关资源
    最近更新 更多