2

我想遇到这种情况,如果有人悬停一个链接,则应该使用有关该链接的信息动态创建一个元素。

我知道有一些标准的 jquery 脚本可用,但是为了我对 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()但没有任何结果。

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

4

1 回答 1

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

引发错误,导致您的脚本终止。
.attr()使用单个参数返回一个字符串或undefined. 它不是 jQuery 对象,因此.remove没有定义。

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

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

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

$("#showEventInfoWrap").remove();将删除#showEventInfoWrap元素,包括它的子元素。

于 2012-05-03T10:17:49.210 回答