如何使用javascript / jquery从ul中删除特定的li?

时间:2014-05-02 13:40:27

标签: javascript jquery html

HTML字符串:

var ul = document.getElementById("list");
$("#list").append(
  "<li class='margbottom'>" +
    "<label id='id_'><img src='images/icon-approved1.png' class='imgspace' align='absmiddle'/><span id='categoriesName'>" + categoryName + "</span>: <span id='categoriesValue'>" + value + "</span></label>" +
    "<div class='menuicon'>" +
      "<ul>" +
        "<li><a href='#url' onclick='removeCategory();'><img src='images/icon_minus.png'></a></li>" +
        "<li><a href='#url'><img src='images/icon-searchby-s.png'></a></li>" +
      "</ul>" +
    "</div>" +
  "</li>"
);

JS:

function removeCategory(){
    alert("Inside removeCategory");
    var elem = document.getElementById('list');
    elem.parentNode.removeChild(elem);
}

我已创建动态列表,我需要动态删除它。通过调用removeCategory它将删除所有元素而不是特定元素。 有人可以帮忙吗? 在此先感谢。

3 个答案:

答案 0 :(得分:2)

在这种特定情况下,您应该将this传递给removeCategory函数并将其用作元素。 所以,基本上 -

<a href='#url' onclick='removeCategory();'

应该是 -

<a href='#url' onclick='removeCategory(this);'

功能应该是 -

function removeCategory(elem){
    alert("Inside removeCategory");
    elem.parentNode.removeChild(elem);
}

但是,不鼓励在这样的JavaScript中添加HTML。如果必须,至少不要使用内联事件侦听器,而是使用jQuery添加它们($("#list a").on("click", removeCategory);,然后在更新的函数中使用this而不是elem)。

此外,您的代码确实删除了整个列表,因为您始终删除具有list ID的元素的父元素。

答案 1 :(得分:2)

在jQuery中你可以这样做:

将类'removeLink'添加到您的代码中。无需onClick()行动。

要移除的jQuery代码:

$('removeLink').click(function(){
    var iconDiv = $(this).closest('.menuicon');
    var li = iconDiv.closest('<li>');
    li.remove();
});

答案 2 :(得分:1)

$("ul").find("[particular li selector]").remove();

以上只是一个起点。这一切都取决于您对特定li的访问权限。您可以直接(通过id)或通过父亲以某种方式访问​​它。

如果可能,请执行此操作

$("#particularLI").remove();