2011-05-09 31 views
0

在準備好文檔之後,我試圖爲一個類中的所有div創建一個對象,並根據div的屬性「id」分配它們。這是我的代碼不起作用,我無法弄清楚。Jquery - 如何基於類中的所有div創建對象?

<div class="supercolor" >      
    <div class="colordiv" id="#111111" style="background-color:#111111;">&nbsp;</div> 
    <div class="colordiv" id="#222222" style="background-color:#222222;" >&nbsp;</div>     
    <div class="colordiv" id="#333333" style="background-color:#333333;">&nbsp;</div> 
</div> 

在我的腳本部分。

$(document).ready(function() { 

    $('div.supercolor > div').each(function() { 
     var color_object = { $(this).attr('id') : false } 
    }); 
}); 

謝謝

+1

你的代碼沒有問題,但是你沒有用'color_object''做'任何事情。你想達到什麼目的?更多細節將幫助我們幫助你。 – 2011-05-09 11:36:40

+0

我想我應該指出你的div ID是無效的。一個ID不能包含#字符,並且它必須以字母開頭。 – GordonM 2011-05-09 11:38:51

+0

@Rob考伊:我想創建一個基於div的簡單顏色選擇器。我需要跟蹤用戶是否點擊了div,方法是將對象設置爲每個div。點擊後,div的對象將被設置爲true。你可以參考我發佈的這個問題,這是設計的第二部分。 [鏈接](http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever) – maomaopop 2011-05-09 11:50:31

回答

2
$(function() { 

    var divObjects = $("div.supercolor > div").map(function(val) { 
     return new DivObject(this.id); 
    }).get(); 

}); 

function DivObject(id) { 
    this.id = id; 
    ... 
} 

這將帶您所有的<div>的並映射他們div的對象。你可以像個人ID那樣從個人<div>傳入數據並將其傳遞給構造函數。您需要撥打.get()才能獲得數組。

[編輯]

var testDiv = $.grep(divObjects, function(val) { 
    val.id === "test" 
})[0]; 

這段代碼看起來可能比較熟悉,雖然

var testDiv; 
for (var i = 0, ii = divObjects.length; i < ii; i++) { 
    var div = divObjects[i]; 
    if (div.id === "test") { 
     testDiv = div; 
     break; 
    } 
} 
+0

不好意思問這個,但我對Jquery很新。如何獲得id#test對象的值?我嘗試了divObjects.get('test')。val(),但似乎並不奏效。 – maomaopop 2011-05-09 12:05:12

+0

@mmk div對象是一個數組。您可以循環使用數組,直到找到具有id測試或$'.grep'的數組爲止。 – Raynos 2011-05-09 12:46:51

1

除非有一個很好的理由讓你存儲的「DivObjects」一個數組,我會考慮改變你的方法。

在頁面加載時,將點擊處理程序附加到每個顏色div上,切換div上的「選定」類(並將其從其他顏色中移除)。

$("div.supercolor > div").click(function(){ 
    $(this).toggleClass('selected').siblings('.selected').removeClass('selected'); 
}); 

在您需要獲得已被選中(如果有的話)與「選擇」類選擇顏色的div的顏色,並把它的任何一點的ID:

$("div.supercolor > div.selected").attr('id'); 

這可能不適合在你的情況下,但它簡單而有效。

+0

實際上,存儲數組並不是我最初的目的。我問這個問題的原因實際上是跟蹤用戶是否點擊並選擇它。因爲點擊/選中,它會輸出一個輸入複選框,並選中div的id。然後,如果用戶再次點擊它,它將被取消選擇,該div的html值將變爲空白,移除輸入複選框。這是我之前在[link](http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever)詢問的問題的一部分。也許你可以看看並提出一些想法。Tx – maomaopop 2011-05-09 15:45:19

+0

我已經爲您的其他問題添加了答案http://stackoverflow.com/questions/5932850/jquery-help-to-create-the-simplest-color-picker-ever#5940131 – 2011-05-09 17:05:29

相關問題