jQuery:单击时将锚元素传递给函数

时间:2013-02-03 01:26:47

标签: jquery

所以..这个应该很简单。我有一个锚元素。单击它时,我想调用一个将删除它的父元素的函数。从本质上讲,它是一个删除父级的链接。

我将如何做到这一点?我尝试过使用以下内容,但无效:

<div>
     <a href='javascript:removeParent()'>Remove</a>
</div>
<script>
function removeParent() {
     $( this ).parent().remove()
}
</script>

任何人都可以帮助我吗?

我正在尝试完成此操作,因为它是一个可以具有多个属性的表单...因此您可以添加更多属性,因此需要一种方法来删除它们。

干杯!

2 个答案:

答案 0 :(得分:3)

$(this)不是您正在这样做的元素。

理想情况下,这是:

<a href='#' class='remove'>Remove</a>

$('.remove').on('click', function(e){
    e.preventDefault();
    $(this).parent().remove();
});

然而,问题的这一部分“所以你可以添加更多属性,因此需要一种方法来删除它们。”意味着你需要将它应用于未来的元素

$(document).on('click', '.remove', function(e){
    e.preventDefault();
    $(this).parent().remove();
});

虽然在理想的情况下你可以减少搜索jQuery,所以给你的列表包装器一个ID并使用它来识别可移动元素。

$('#attributelist').on('click', '.remove', function(e){
    e.preventDefault();
    $(this).parent().remove();
});

答案 1 :(得分:0)

如果您在onload之后动态创建元素,则需要修改popnoodle的代码以使用容器:

$('#container').on('click', '.remove', function(e) {...

这假设所有具有类remove的元素都在元素container中。它在container上创建一个事件处理程序,它将应用于类remove的任何元素,即使它们是在附加处理程序之后创建的。