<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节点。请帮忙。
答案 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--;
});
});
您可以在此使用$(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。