1
<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

4 回答 4

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>
于 2013-08-04T15:17:47.293 回答
0

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

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

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

});

演示 JSFIDDLE

在这里您可以使用$(this), as$(this)指的是被点击的对象。

或者,按照其他答案中的建议,将其与您的函数一起传递。

于 2013-08-04T15:26:32.400 回答
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 + ')');
  }

在这里演示

于 2013-08-04T15:09:47.057 回答
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

于 2013-08-04T17:13:29.017 回答