2013-09-25 72 views
5

Tôi đã dán tất cả các mã của tôi để JSFIDDLECách nhắm mục tiêu của tôi tạo ra một cách ngẫu nhiên ID

gì hệ thống của tôi sẽ có thể làm là tạo một ngôi nhà với một ID ngẫu nhiên và thiết lập công suất tối đa của cư dân trong nhà. Sau đó, bạn có thể tạo một số người và kéo họ vào nhà. Khi 2 người được kéo lên trên một ngôi nhà, ngôi nhà sẽ hiển thị một hiệu ứng bị trả lại và một em bé sẽ xuất hiện.

Vấn đề của tôi hiện tại là tôi dường như không thể tìm ra cách nhắm mục tiêu ID ngẫu nhiên của nhà tôi. Vì vậy, ngay bây giờ nếu bạn tạo nhiều hơn một ngôi nhà, nhưng chỉ di chuyển hai người vào một trong số họ, tất cả những ngôi nhà sẽ "trả lại" kể từ khi tôi đang nhắm vào lớp .House:

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

     }); 
(From line 212) 

Cố gắng tạo ra một nhà trong kết quả của JSFIDDLE và nhấp vào nó. Ở đây bạn sẽ có tùy chọn xóa nhà. Con đường tôi nhắm mục tiêu chức năng nhấp chuột của tôi có như thế này:

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

Tại một số điểm tôi sẽ cũng như if (this.aPeople.length == 2) để bao gồm rằng nó phải là nam và nữ để làm em bé.

Các giới tôi chỉ nhận được bởi:

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

Tôi thực sự hy vọng rằng bạn có thể giúp tôi ra với một số của nó hoặc ít nhất là chỉ cho tôi đi đúng hướng. Tôi nhận được một chút thất vọng bằng cách nhìn vào cùng một mã mà không có tiến bộ lâu dài. Cảm thấy tự do để chơi xung quanh với các JSFIDDLE ..

+0

$ ('#' + iRandomId) thay vì $ ('. House')? – Christophe

Trả lời

2

tôi lời khuyên không sử dụng id cho việc này. Kiểm tra http://jsfiddle.net/hLGsH/10/. Tạo một ngôi nhà mới như thế này:

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

Sau đó, lưu trữ đối tượng DOM trong trường hợp lớp:

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

và sử dụng obj.effect('bounce'); để trả lại chỉ đối tượng này.

0

hoặc sử dụng một array để giữ tất cả các id s, và tham khảo chúng bằng cách chỉ mục, hoặc chỉ cần không sử dụng một ngẫu nhiên (sử dụng # 1, # 2) và tạo ra một .data("id", math.floor(math.random) * 999999999) và sử dụng để người dùng thấy "id".

hoặc bạn có thể sử dụng trình xử lý sự kiện $(".house").handler(function(){ babyIn = $(this).attr("id")}) hoặc thứ gì đó cho giai điệu đó. nếu bạn thực hiện điều này, hãy đảm bảo sử dụng biến toàn cục.

cũng

nhà sẽ hiển thị một hiệu ứng nảy và một đứa bé sẽ xuất hiện

rofl.

1

dường như có các lỗi khác và vì lý do nào đó ngôi nhà mà người đó bị lôi vào dường như không phải là thứ mà nó thực sự bị lôi vào. nhưng để trả lời câu hỏi của bạn và ít nhất cung cấp cho bạn một ý tưởng phải làm gì, bạn có thể quảng cáo một biến trong lớp Nhà var self = this; và sau đó truy vấn sẽ $("#"+self.getId())...

here is an example dòng chú thích 194, 219, 212

EDIT cũng vậy, tôi thấy rằng trong $('#BtnCreateHouse').click(function()... bạn đính kèm sự kiện vào ".House" khi bạn sử dụng oHouse, bạn nên đính kèm một sự kiện dành riêng cho ngôi nhà vào nhà chứ không phải tất cả các ngôi nhà.một lần nữa, giải pháp là sử dụng "#"+oHouse.getId() hoặc "#"+iRandomId

here is an example dòng lưu ý 29,31,51