如何定位我随机创建的ID

时间:2013-09-25 20:32:49

标签: javascript jquery html random

我已将所有代码粘贴到JSFIDDLE

我的系统应该能够做的是创建一个随机ID的房子,并设置房子里居民的最大容量。然后,您可以创建一些人并将其拖到房子上。当2个人被拖到房子的顶部时,房子将显示弹跳效果并且将出现婴儿。

我现在的问题是,我似乎无法弄清楚如何定位我家的随机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 ..

3 个答案:

答案 0 :(得分:2)

我建议不要使用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');仅反弹此对象。

答案 1 :(得分:1)

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

here is an example 注释行194,219,212

修改 另外,我在$('#BtnCreateHouse').click(function()...中看到,当您使用".House"时,您会将事件附加到oHouse,您应该将房屋特定事件附加到房屋,而不是所有房屋。再一次,解决方案是使用"#"+oHouse.getId()"#"+iRandomId

here is an example 注意第29,31,51行

答案 2 :(得分:0)

使用array来保存所有id,并通过索引引用它们,或者只是不使用随机的(使用#1,#2)并创建{{1}并使用它来让用户看到“id”。

或者您可以使用事件处理程序.data("id", math.floor(math.random) * 999999999)或其他内容来获取它。如果这样做,请确保使用全局变量。

  

房子会显示弹跳效果,并且会出现一个婴儿

ROFL。