2016-07-27 34 views
0

如何使用prev()选择上一个元素?我希望当我点击icon 1它将删除span如何正确使用jquery prev?

html.erb

# inside a loop -- notice the loop!. 
<span data-id="foo_span"> 
    <i data-id="bar">icon 1</i> 
    <i>icon 2</i> 
</span> 

的JavaScript:

$("[data-id=bar]").click(function(e){ 
    e.preventDefault(); 
    //$(this).prev("[data-id=foo_span]").remove(); 
    $(this).prev().remove(); 
}); 

我是否正确使用prev()?基于这些示例,它使用.css。删除span标签的正确方法是什么? i必须位于span标签内。

+2

使用'parent()'... –

+0

'prev()'在* siblings *集合中倒退。你需要使用'parent()'来代替。 – haim770

+1

prev()是兄弟姐妹...请阅读文档https://api.jquery.com/prev/ – epascarello

回答

1

您需要使用parent()方法和prev()方法是使用以获取元素的直接前置兄弟。

$(this).parent().remove(); 
+1

哦,我的日子!昨天晚上我在四处挖掘,看到了某处,但从未点击过。是的,工作! – Sylar

0

这似乎适用于我。这是你想要的吗?

https://jsfiddle.net/ndva0rkz/

$("body").on("click", ".f", function(e){ 
    e.preventDefault(); 
    //$(this).prev("[data-id=foo_span]").remove(); 
    $(this).prev().remove(); 
}); 
<span data-id="foo_span"> 
    <i class="f" data-id="bar">icon 1</i> 
    <i class="f">icon 2</icon> 
</span> 
+0

对我来说,它会删除完整的循环。 – Sylar

+0

我试图在代码中保留'prev'以显示用法。 :) – Programmer

0

关于使用父母什么()?

$("[data-id=bar]").click(function(e){ 
    e.preventDefault(); 
    $(this).parent().remove(); 
});