我有一个可以创建一些“房子”和“人”的系统。对我来说,下一步是我想显示一些关于我点击的房子的信息。但是,我只能访问有关最后创建的房屋的信息,而不能访问我单击的房屋。
在此处查看图片:
右边的房子是我创建的最后一所房子。信息显示正确。但是如果我点击第一所房子(左边的房子),我的信息不会改变。
我在这里创建了一个JSFIDDLE,我们可以自己尝试一下。
我猜我的问题出在我的 objHouse.click(function() 的某个地方。我尝试了几种不同的方法。现在我正试图像这样定位它:
$('#BtnCreateHouse').click(function(){
oHouse = CreateHouseInMemory();
CreateHouseInLayout(oHouse);
});
function CreateHouseInMemory()
{
var oHouse =
{
"id": "H"+GetRandomNumber(999, 999999999999),
"StreetMame": $('#StreetName').val(),
"Number": $('#Number').val(),
"MaxPeople" : $('#MaxPeople select').val(),
"aPeople": []
}
aHouses.push(oHouse);
console.log(oHouse);
return oHouse;
}
function CreateHouseInLayout()
// See JSFIDDLE, to much code to be posted here.
var objHouse = $('#' + oHouse.id)
objHouse.click(function(){
$("#WindowDisplayHouseInfo").show();
$('#ShowId').text("ID: " + oHouse.id);
$('#ShowStreetName').text("Street Name: " + oHouse.StreetMame);
$('#ShowNumber').text("Number: " + oHouse.Number);
$('#ShowMaxInhabitants').text("Max inhabitants: " + oHouse.MaxPeople);
for(var i = 0; i < oHouse.aPeople.length; i++)
{
$('#ShowInhabitants').html("<br />" + "Inhabitant: " + oHouse.aPeople.length
+"<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($('#City')).css({"top":"" , "left":""});
});
$(objHouse).remove();
$("#WindowDisplayHouseInfo").hide();
});
});
我真的希望你们中的一个人能告诉我我做错了什么。我已经被困了好几个小时了。
更新
我发现如果我改变:
objHouse.click(function(){
到
$('.House').click(function(){
然后改变
$('#ShowId').text("ID: " + oHouse.id)
到
$('#ShowId').text("ID: " + this.id);
然后它将适用于 ID,但如果我 fx. write ("街道名称:" + this.StreetName); 那么它就行不通了。知道为什么吗?
在这里更新了 JSFIDDLE:http: //jsfiddle.net/Adnaves/pcVR6/2/