[英]How to remove previous li on anchor click
我正在使用jQuery设置一些<li>
和anchor标签。 现在我想删除锚点单击上的附加li。让我在代码上显示我想做的事情。由于这些元素是动态生成的,因此我无法为其分配任何ID。
<ul id="imagess">
<li><img width="60" height="60" src="http://example.com/images/event.png"></li><a href="javascript:void(0);" onclick="deleteit('event.png')"> <img style="float: left; margin-left: -25px;margin-top: 60px;" src="http://example.com/images/delete.png"></a>
<li><img width="60" height="60" src="http://example.com/images/event2.png"></li><a href="javascript:void(0);" onclick="deleteit('event2.png')"> <img style="float: left; margin-left: -25px;margin-top: 60px;" src="http://example.com/images/delete.png"></a>
</ul>
我正在尝试删除deletit()
js函数调用中的<li>
使用事件委托的当前HTML解决方案。
$(document).on('click', 'li + a', function(){
$(this).prev().remove();
})
但是,您的HTML / JS应该看起来更像这样:
$(document).on('click', '#imagess li a', function(){ console.log(this); $(this).closest('li').remove(); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <ul id="imagess"> <li> <img width="60" height="60" src="http://example.com/images/event.png"> <a href="javascript:void(0);"> <img style="float: left; margin-left: -25px;margin-top: 60px;" src="http://example.com/images/delete.png"> </a> </li> <li> <img width="60" height="60" src="http://example.com/images/event2.png"> <a href="javascript:void(0);"> <img style="float: left; margin-left: -25px;margin-top: 60px;" src="http://example.com/images/delete.png"> </a> </li> </ul>
您具有jQuery标签,因此这里是一个示例:
$(this).closest('li').prev().remove();
更新:从问题详细信息和您的评论的措辞看来, path
本身就是锚点,并且您不想删除先前的li
,但是如果要删除容器li
本身,请更改为:
$(path).closest('li').remove();
更新2
检查一下:
$('#imagess').on('click', 'a', function() {
$(this).prev('li').remove();
return false;
})
但是,这仅适用于<a>
直接位于<ul>
内部的无效HTML。 以正确的方式, <a>
应该位于<li>
,我现在已经将其固定在另一个答案中。
$('ul a').click(function() {
$(this).prev().remove();
});
prev()
获取a
元素的前一个同级元素,即li
。 remove()
很容易解释。
另外,您的HTML无效。 ul
的唯一直接子元素是li
元素。
编辑:如果您在li
内移动a
则上面给出的“最接近”答案将是正确的。 人们以为他们已经在那里了,否则HTML无效。
更新:删除内嵌的onclick属性从a
标签,你已经在代码中定义click事件本身上拨弄: http://jsfiddle.net/Lp88exqb/新小提琴: http://jsfiddle.net/Lp88exqb/1/
您不应该a
标签作为ul
标签的直接子标签,它应该在li
标签中,然后您必须使用以下代码来删除任何点击前的li
$('ul a').click(function() {
$(this).parent().prev().remove();
});
1. Step 1
Your HTML CODE has to be like this
-------------------------------------
<code>
<ul id="imagess">
<li>Img1</li>
<a href="javascript:void(0);" onclick="deleteit(this)">Img1</a>
<li>Img2</li>
<a href="javascript:void(0);" onclick="deleteit(this)">Img2</a>
</ul>
</code>
-------------------------------------------
2. Write a JS Funcion like this
-------------------------------------------
function deleteit(obj){
$(obj).prev('li').remove();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.