【问题标题】:How to target my randomly created ID如何定位我随机创建的 ID
【发布时间】:2013-10-01 14:53:45
【问题描述】:

我已将所有代码粘贴到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..

【问题讨论】:

  • $('#' + iRandomId) 而不是 $('.House') ?

标签: javascript jquery html random


【解决方案1】:

要么使用array 来保存所有ids,并通过索引引用它们,或者只是不使用随机的(使用#1、#2)并创建一个.data("id", math.floor(math.random) * 999999999) 并将其用于用户看到一个“id”。

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

还有

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

罗夫。

【讨论】:

    【解决方案2】:

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

    here is an example 注意第 194、219、212 行

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2020-09-17
        • 2015-07-28
        • 2012-06-09
        相关资源
        最近更新 更多