5

我已将所有代码粘贴到JSFIDDLE

我的系统应该能够做的是创建一个带有随机 ID 的房子,并设置房子里的最大居住人数。然后,您可以创建一些人并将他们拖到房子上。当两个人被拖到房子的顶部时,房子会出现弹跳效果,会出现一个婴儿。

我现在的问题是我似乎无法弄清楚如何定位我家的随机 ID。所以现在如果你创建了不止一所房子,但只把两个人搬进其中一个,所有的房子都会“反弹”,因为我的目标是 .House 类:

if(this.aPeople.length == 2)
    {
        // TODO: Create a new Person
        setTimeout(function(){
            $('.House').effect('bounce');
        }, 0, function(){

        } ); 
(From line 212)   

尝试在JSFIDDLE的结果中创建一个房子并点击它。在这里,您将获得删除房屋的选项。我定位我的点击功能的方式是这样的:

var iDivHouseId = $(this).attr('id');
$('#WindowDisplayHouseInfo').data('current-elem-id', iDivHouseId);
(on line 33 and 34)

在某些时候,我还希望 if(this.aPeople.length == 2) 包括它必须是男性和女性才能生孩子。

我刚刚得到的性别:

var sPersonGender = $("#gender input[type='radio']:checked").val();

我真的希望你能帮助我解决一些问题,或者至少为我指明正确的方向。长时间查看相同的代码而没有进展,我感到有些沮丧。随意使用 JSFIDDLE..

4

3 回答 3

1

我建议不要为此使用 id 。检查http://jsfiddle.net/hLGsH/10/。像这样创建一个新房子:

var objHouse = $('<div id="' + iRandomId + '" class="House" title="' + sStreetName + '" />');
objHouse.appendTo('.HouseContainer');

然后将 DOM 对象存储在类实例中:

oHouse.setObj(objHouse);
...
function House()
{
  var obj;
  this.setObj = function(o) {
    obj = o;
  }
...

并用于obj.effect('bounce');仅反弹此对象。

于 2013-09-25T21:04:20.163 回答
0

要么使用 aarray来保存所有ids,并通过索引引用它们,要么不使用随机的(使用 #1、#2)并创建 a.data("id", math.floor(math.random) * 999999999)并使用它让用户看到“id”。

或者你可以用你的事件处理程序$(".house").handler(function(){ babyIn = $(this).attr("id")})或类似的东西来获得它。如果这样做,请确保使用全局变量。

房子会出现弹跳效果,会出现一个婴儿

罗弗。

于 2013-09-25T20:43:42.440 回答
0

似乎还有其他错误,由于某种原因,这个人被拖进的房子似乎不是它实际被拖进的房子。但是要回答您的问题并至少让您知道该怎么做,您可以在 House 类中添加一个变量,var self = this;然后查询将是$("#"+self.getId())...

这是一个示例 注释行 194、219、212

编辑 也,我看到你在使用时$('#BtnCreateHouse').click(function()...附加事件,你应该将特定于房屋的事件附加到房屋,而不是所有房屋。再次,解决方案是使用或".House"oHouse"#"+oHouse.getId()"#"+iRandomId

这是一个示例 注释行 29,31,51

于 2013-09-25T20:57:39.190 回答