jquery删除创建的元素,包括子元素

时间:2012-05-03 10:15:54

标签: jquery

我希望有这种情况,如果有人悬停链接,应该动态创建一个元素,并提供有关该链接的信息。

我知道有一些标准的jquery scrips可用于此,但是由于我对jquery的理解,我想自己制作。

我将展示这样的元素:


    $(".event-date").live("mouseover",function(e){
        var event = e || window.event; 
        event.preventDefault();
        $(this).append("<div id='showEventInfoWrap'><div id='closeEventInfo'>Close</div><div id='showEventInfo'></div></div>");
        $("#showEventInfo").load("event-info.php");
    });

我使用live()因为日历显示在<div>元素中,当用户浏览月份时,该元素会发生变化。

问题在于隐藏div时: a)用户点击“关闭”链接;要么 b)用户徘徊在出现的元素之外。

我尝试了以下任何选项,但它们都没有奏效:


    $("#closeEventInfo").live("click",function(e){
        $(this).parent().attr("id").remove();
        $("#showEventInfoWrap").remove();
        $("#showEventInfoWrap").children().remove();
        $("#showEventInfoWrap").add("#closeEventInfo").add("#showEventInfo").remove();
    });

我还尝试了empty()而不是remove(),但没有任何结果。

有人可能知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

$(this).parent().attr("id").remove();

抛出错误,导致脚本终止 带有单个参数的.attr()返回一个字符串或undefined。它不是jQuery对象,因此.remove未定义。

  • 如果要删除父元素,请使用:

    $(this).parent().remove();
    
  • 如果要删除ID属性,请使用:

    $(this).parent().removeAttr("id");
    

$("#showEventInfoWrap").remove();会删除#showEventInfoWrap元素,包括其子代