使用jquery从ul元素中删除节点

时间:2013-08-04 15:01:48

标签: jquery

<ul class="tagsul">
              <li class="tagsLi"><div class="tagsSpan">test<img class="removeitem" src="../Images/Cross.png" onclick="UpdateTag(0, 2)"></div>,</li>
              </li>
          </ul>

正在调用的函数如下

function UpdateTag(data, index) {

    var $this = $(this);
    alert($this);
    $(this).parents('.tagsLi').remove();
    index--;
    //.remove('li:eq(' + index + ')');
}

我尝试了许多排列组合,但仍然无法删除调用该函数的li节点。请帮忙。

4 个答案:

答案 0 :(得分:0)

this添加到您的onclick中,例如:onclick="UpdateTag(0, 2, this)"

然后你可以使用你的功能:

 function UpdateTag(data, index, e) {
      var el = $(e);
      el.parents('.tagsul').children('.tagsLi').remove()
      index--;
      //.remove('li:eq(' + index + ')');
  }

DEMO HERE

答案 1 :(得分:0)

<html>
   <head>
      <script type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
 </head>
<body>
   <ul class="tagsul">
          <li class="tagsLi"><div class="tagsSpan">test<img id="img12" class="removeitem" src="../Images/Cross.png" onclick="javascript:return UpdateTag(0, 2,this)"></div>,</li>
          </li>
      </ul>
</body>
</html>
 <script type="text/javascript">
  function UpdateTag(data, index,imgobj) {

  var img_obj = $(imgobj);

  alert(img_obj.parent('div').attr('class'));

    img_obj.parents('.tagsLi').remove();
   index--;
  //.remove('li:eq(' + index + ')');
 }
 </script>

答案 2 :(得分:0)

$(this)是指窗口而不是图像元素。

为什么不简单地使用jquery来检测点击和更新,对我来说很好。

$(document).ready(function(){
var index = $('img').length;
    $('img').click(function(){
        var $this = $(this);
        alert($this);
        $(this).parents('.tagsLi').remove();
        index--;
    });

});

DEMO JSFIDDLE

您可以在此使用$(this),因为$(this)指的是被点击的对象。

或者,按照其他答案的建议,将其传递给您的函数。

答案 3 :(得分:0)

在您的情况下,$(this)令人困惑。目前尚不清楚函数中应该是什么“this”元素。另外,我建议不要使用内联函数调用,因为只要JS被禁用就会引发错误。您可以使用jQuery处理click事件,如下所示:

$('.removeitem').click(function(e){
    var $this=$(this);
    //var index=$this.data('index');
    //var data=$this.data('info');
    $this.parents('.tagsLi').remove();
});

将img标记更改为:

<img class="removeitem" data-index="0" data-info="2" src="../Images/Cross.png" />

它的好处是,如果JS被禁用,处理程序将不会首先附加到元素,从而防止出现可预测的错误。

见工作FIDDLE