如何使用类Javascript删除现有ul中的li

内娜·佩斯(NenaPece)

在帮助下,我设法从现有列表中创建添加和删除。

当我添加所需的文本时,它会显示,id因此我以后可以将其删除。现有清单的问题是如果我不设置手册便无法删除它id当我单击该元素时,该如何获取<strong>并获取class;当我单击删除时,该如何删除。你能为我指出正确的方向吗?

function addItem() {
  var ul = document.getElementById("list");
  var txt = document.getElementById("txt");
  var li = document.createElement("li");
  li.setAttribute('id', txt.value);
  li.appendChild(document.createTextNode(txt.value));
  ul.appendChild(li);
}

function removeItem() {
  var ul = document.getElementById("list");
  var txt = document.getElementById("txt");
  var item = document.getElementById(txt.value);
  ul.removeChild(item);
}
<input type="text" id="txt" />
<button onclick="addItem()">Add</button>
<button onclick="removeItem()">Remove</button>

<ul id="list">
  <li id="element1">element1</li>
  <li>element2</li>
  <li>element3</li>
  <li>element4</li>
</ul>

罗科·C·布尔扬

您根本不需要ID。
在创建LI时,添加一个Remove按钮。单击该按钮时,将查找其最接近的LI元素并将其删除。
这样,并且不将输入值与ID相关联-您可以输入所需的任何文本,即使有空格也可以:

const $add = $("#add"),
      $txt = $("#txt"),
      $list = $("#list");

function newListItem() {

  const $remove = $("<button>", {
    text: "×",
    title: "Remove item",
    on: {
      click() {
        $(this).closest("li").remove();
      }
    }
  });

  return $("<li>", {
    text: $txt.val(),
    append: $remove, 
    prependTo: $list,
    ready() {
      $txt.val(""); // Clear input value once LI is ready
    }
  });
}

$add.on("click", newListItem)
li button {border-radius:50%; border:0; margin-left:10px; cursor:pointer;}
<input type="text" id="txt">
<button id="add">Add</button>
<ul id="list"></ul>
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>

如果要突出显示所需的li并有一个REMOVE按钮,一个不错的方法是.is-selected在LI单击上分配一个类,在Remove单击上分配一个类-仅删除具有is-selected类名的类:

const $add = $("#add"),
      $remove = $("#remove"),
      $txt = $("#txt"),
      $list = $("#list");

function newListItem() {
  return $("<li>", {
    text: $txt.val(),
    prependTo: $list,
    ready() {
       $txt.val(""); // Clear input value once LI is ready
    }
  });
}

// Manage LI selections for Removal
$list.on("click", "li", function() {
  $list.find("li").not(this).removeClass("is-selected");
  $(this).addClass("is-selected");
});

function removeListItem() {
  const $selected = $list.find("li.is-selected");
  if(!$selected.length) return alert("Select an item to remove");
  $selected.remove();
}

$add.on("click", newListItem);
$remove.on("click", removeListItem);
li.is-selected{ outline: 2px solid #0bf; }
<input type="text" id="txt">
<button id="add">Add</button>
<button id="remove">Remove</button>
<ul id="list">
  <li>Select me and click Remove</li>
  <li>I'm another to-do item</li>
</ul>
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>

在我看来,必须向上滚动列表以仅单击“删除”按钮似乎是一个糟糕的UI,相反,这是我处理此任务的方式,基本上是示例1和示例2的混合:

const $add = $("#add"),
  $txt = $("#txt"),
  $list = $("#list"),
  $remove = $("<button>", {
    text: "Remove",
    on: {
      click() {
        const $li = $(this).closest('li.is-selected');
        $(this).detach();
        $li.remove();
      }
    }
  });

function newListItem() {
  return $("<li>", {
    text: $txt.val(),
    prependTo: $list,
    ready() { $txt.val(""); } // Clear input value once LI is ready
  });
}

// Manage LI selections for Removal
$list.on("click", "li", function() {
  $list.find("li").not(this).removeClass("is-selected");
  $(this).addClass("is-selected").append( $remove ); // Append our Remove button
});

$add.on("click", newListItem)
li {
  position: relative;
  cursor: pointer;
  line-height: 1.4em;
}

li.is-selected {
  background: rgba(100,200,255,0.2);
}

li.is-selected button { /* Show Remove button on LI select */
  display: block;
  position: absolute;
  right: 0;
  top: 0;
}
<input type="text" id="txt">
<button id="add">Add</button>
<ul id="list">
  <li>Select me and click Remove</li>
  <li>I'm another to-do item</li>
</ul>
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从ul中删除所有li?

如果没有 ul 孩子,jquery 从 li 中删除类

如何使用javascript在ul中循环li

在现有的 <li> 中添加 <ul>

如果 ul 没有使用 jquery 或 javascript 的类,如何隐藏 li

使用javascript将css类添加到ul中的所有li父元素

如何在ul> li中查找所有类名

使用li的ID从ul中删除li

如何使用jQuery click()从<ul>中删除单个<li>

在原型中如何从ul中删除li

如何从React UL / LI中删除HTML

如何使用JavaScript从列表中删除<li>

尝试删除li大于的ul中的所有li

如何获取所有 li 元素在 ul 中具有类展示技能

如何为嵌套在DIV中带有类的UL中的LI设置CSS规则?

再次按下按钮时如何从 ul 中删除所有 li

如何使用JavaScript为LI下的UL元素生成相同的类名?

如何使用beautifulsoup获取没有任何类或id的特定ul元素li的文本和href

如何使用Puppeteer从输入中删除现有文本?

JavaScript 如何在 <ul> 中创建 <li> 并点击 <li>

如何在文本框更改时将ul li添加到div中以及如何使用jQuery从div中删除ul li

使用类在ul li中更改字体颜色

如何使用jQuery将类添加到现有<li>标记的一部分的span元素中

jQuery从UL中选择所有LI,而不是在具有类的UL元素中

如何删除文件中的现有文本

如何从现有表中删除列?

在ghci中,如何删除现有绑定?

如何删除 Leaflet 中的现有控件?

如何使用Javascript从父级的所有子级中删除活动类