单击新对象时忘记上一次单击?

时间:2013-10-17 20:22:03

标签: javascript jquery click

我有一个系统,你可以创建一个房子和一些人。创建房屋后,然后单击它,将显示一些信息。你也有机会删除房子。

但是,如果您点击新房子,系统现在将忘记之前的点击。因此,我点击的两个房屋都将被删除。

您可以在JSFIDDLE

中对其进行测试

这一切都发生在我的点击功能中:

  var objHouse = $('#' + oHouse.id)

  objHouse.click(function(){

    $('#WindowDisplayCarInfo').hide();
    $('#WindowDisplayPersonInfo').hide();
    $("#WindowDisplayHouseInfo").show();

    $('#ShowId').text("ID: " + this.id);
    $('#ShowStreetName').text("Street Name: " + oHouse.StreetName);
    $('#ShowNumber').text("Number: " + oHouse.Number);
    $('#ShowInhabitants').empty();
    $('#ShowMaxInhabitants').text("Max inhabitants: " + oHouse.MaxPeople);


    for(var i = 0; i < oHouse.aPeople.length; i++)
    {
    $('#ShowInhabitants').append("<br />" 
                               +"<br />" + "ID: " + oHouse.aPeople[i].id
                               +"<br />" + "Name: " + oHouse.aPeople[i].Name
                               +"<br />" + "Last Name: " + oHouse.aPeople[i].Lastname
                               +"<br />" + "Age: " + oHouse.aPeople[i].Age
                               +"<br />" + "Gender: " + oHouse.aPeople[i].sGender
                               );
    }   

        $('.DeleteHouse').click(function()
        {
            $(objHouse).children().each(function(){
                $(this).appendTo($('#container')).css({"top":"" , "left":"", "display":"block"});
            });

            $(objHouse).remove();                  
            $("#WindowDisplayHouseInfo").hide();
        });
}); 

}

(从JSFIDDLE的第130行开始。)

希望你能教我一两招。 : - )

1 个答案:

答案 0 :(得分:2)

这可能不是很好的做法,但在30分钟之后,我可以想出所有这些。它只是从右上方的框中提取ID,并仅删除所选的框。 “不良做法”可能是次要部分。为了使它稍微好一点,你可能想要利用indexOf()找到ID的开头而不仅仅是整数4,因为该ID框的结构会发生变化。

$('.DeleteHouse').click(function()
{
    $(objHouse).children().each(function(){
        $(this).appendTo($('#container')).css({"top":"" , "left":"", "display":"block"});
    });
    var currentID = $("#ShowId").html().substr(4);
    console.log(currentID);
    $("#"+currentID).remove();  
    $("#WindowDisplayHouseInfo").hide();
});

http://jsfiddle.net/t8TKc/3/