首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否通过单击div删除父元素?

是否通过单击div删除父元素?
EN

Stack Overflow用户
提问于 2014-07-06 16:43:43
回答 2查看 139关注 0票数 0

我有一个像这样生成的表单

代码语言:javascript
复制
        <%for (var i = 0; i < user.categories.length; i++) {%>
        <div class="form-group" id="<%=i %>">
        <input type="text" class="form-control" name="category<%=i %>name" value="<%=user.categories[i].taskname%>" placeholder = "Enter task name">
        <input type="number" class="form-control" name="category<%=i %>priority" value="<%=user.categories[i].taskpriority%>" placeholder = "Enter task priority" min="1" max="3">
        <input type="number" class="form-control" name="category<%=i %>duration" value="<%=user.categories[i].taskduration%>" placeholder = "Enter task duration" min="0" max="24">
        <button class = "delete" id="<%=i %>" type="button">Delete</button>
            <!--<input type="text" class="form-control" name="category<%=i %>" value="<%=user.categories[i] %>"> -->
                            <br>
        </div>
                        <br>

        <%} %>

和这个脚本

代码语言:javascript
复制
    $(".delete").click(function(){
        var parent = this.parent();
        alert(this.id); 
        parent.empty();


    });

我正在创建一个id为i的delete按钮,我认为jquery会获取我单击的元素,然后找到它的父div并删除整个div。然而,这并没有发生,你知道为什么吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-06 16:53:12

您正在混合使用jQuery和普通javascript。在jQuery事件处理程序中,this是一个DOM对象(不是jQuery对象),而DOM对象没有.parent()方法。它有一个.parentNode属性。如果想要获得一个可以调用jQuery方法.empty()的jQuery对象,则需要像这样使用$(this)

代码语言:javascript
复制
$(".delete").click(function(){
    var parent = $(this).parent();
    parent.empty();
});

或者,用一种更简洁的方式:

代码语言:javascript
复制
$(".delete").click(function(){
    $(this).parent().empty();
});

此外,.empty()将只清除父对象的内容。它不会删除父节点,但会删除父节点中的所有子节点(例如清空父节点)。如果您想实际删除父对象,可以像这样使用.remove()

代码语言:javascript
复制
$(".delete").click(function(){
    $(this).parent().remove();
});
票数 1
EN

Stack Overflow用户

发布于 2014-07-06 16:52:54

这是因为闭包中的this语句不是jQuery对象。它只是一个HTMLElement。因此,您需要首先将this转换为jQuery才能访问.parent()方法:

代码语言:javascript
复制
var parent = jQuery(this).parent();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24594134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档