2013-09-25 11 views
5

mam wklejony wszystkie moje kodu JSFIDDLEJak kierować moją losowo utworzony identyfikator

Co mój system powinien być w stanie zrobić, to stworzyć dom z losowym ID i ustawić maksymalną pojemność mieszkańców w domu. Możesz wtedy stworzyć kilka osób i przeciągnąć je do domu. Kiedy 2 osoby zostaną wciągnięte na dom, dom pokaże efekt odbicia i pojawi się dziecko.

Mój problem polega na tym, że nie mogę sobie wyobrazić, jak celować w przypadkowy identyfikator mojego domu. Więc teraz, jeśli utworzyć więcej niż jeden dom, ale tylko dwie osoby przenieść do jednego z nich, wszystkie domy będą „bounce”, ponieważ jestem kierowania klasę .House:

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

     }); 
(From line 212) 

próby utworzenia dom w wynikach JSFIDDLE i kliknij go. Tutaj dostaniesz opcję usunięcia domu. Sposób, w jaki ukierunkowane mój funkcji kliknięcia było tak:

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

W pewnym momencie Chciałbym również if (this.aPeople.length == 2) zawierać że musi być płci męskiej i żeńskiej, aby dziecko.

Płeć, ja po prostu przez:

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

Naprawdę mam nadzieję, że może mi pomóc z niektórymi z nich lub przynajmniej pkt mnie we właściwym kierunku. Trochę mnie to frustruje, patrząc na ten sam kod bez żadnych postępów. Krępuj się bawić z JSFIDDLE ..

+0

$ ('#' + iRandomId) zamiast $ (". House")? – Christophe

Odpowiedz

2

radzę, aby nie używać tego identyfikatora. Sprawdź http://jsfiddle.net/hLGsH/10/. Utwórz nowy dom tak:

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

następnie zapisać obiekt DOM w instancji klasy:

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

i używać obj.effect('bounce'); odbić tylko ten przedmiot.

0

albo użyć array aby pomieścić wszystkie id s, i odwoływać się do nich przez indeks, albo po prostu nie używaj losowo jeden (use # 1, # 2) i stworzyć .data("id", math.floor(math.random) * 999999999) i użyj tego, aby użytkownik zobaczył "id".

lub można uzyskać go z obsługą zdarzeń $(".house").handler(function(){ babyIn = $(this).attr("id")}) lub coś w tym tonie. jeśli to zrobisz, upewnij się, że używasz zmiennej globalnej.

również

dom pokaże efekt odrzuceń i dziecko pojawi

rofl.

1

Wygląda na to, że są inne błędy i z jakiegoś powodu dom, do którego dana osoba została wciągnięta, nie wydaje się tym, do którego został wciągnięty. ale aby odpowiedzieć na to pytanie i conajmniej daje wyobrażenie co do zrobienia, można reklama zmienna w klasie Domu var self = this; a następnie kwerendy będzie $("#"+self.getId())...

here is an example note linii 194, 219, 212

EDYCJA również widzę, że w $('#BtnCreateHouse').click(function()... dołączasz wydarzenia do ".House", gdy używasz oHouse, powinieneś dołączyć do domu zdarzenie specyficzne dla domu, a nie do wszystkich domów.ponownie, rozwiązanie jest przy użyciu "#"+oHouse.getId() lub "#"+iRandomId

here is an example note linii 29,31,51

Powiązane problemy