2013-08-23 36 views
0

我有一個巨大的HTML選擇列表,它有一堆選項。其中一些選項具有我用來識別的「父」屬性。基本上,當有人選擇父級下拉菜單時,它的所有孩子都會填充不同的下拉菜單。所以我試圖把所有這些對象放到一個數組中,將它們從頁面中刪除,然後在我需要它們時調用它們。從jQuery中的頁面元素製作數組

這是我從一個我們正在使用的網站取得的所有HTML代碼,所以它們使它自己以某種方式工作(不知道如何)。我的想法就是製作一個對象,並將這些項目推入該對象(使用'id'和'parent'鍵)。它似乎並沒有像我這樣做的方式:

var location_array = new Object(); 

$('select[name="location"] option').each(function(){ 
    if($(this).attr('parent')){ 
     var obj = { 
      id: $(this).attr('id') 
      parent: $(this).attr('parent') 
     } 
     location_array.push(obj);   
    } 
}); 

任何幫助將不勝感激。我知道這可能是非常基本的,但我不經常做這種類型的編碼。謝謝你的幫助!

+0

在HTML中,「parent」是屬性嗎? –

+0

@MuhammadTalhaAkbar,我從來沒有見過它,但它能夠抓住屬性。就像我說的,我從另一個有工作代碼的頁面複製代碼,我可以使用console.log在所有選項上打印出「父」值,這樣就可以工作。 – MillerMedia

回答

3

變化

var location_array = new Object(); 

var location_array = []; 

對象沒有方法.push()

0

您使用push,但location_array是不是一個數組,它是一個對象。

我可能會保持它的對象(我已經改變了名稱):

var parents = {}; // A better way to write `new Object()` 

$('select[name="location"] option').each(function(){ 
    var parent = $(this).attr('parent'); 
    parents[this.id] = parent; 
}); 

現在你有一張地圖,地圖元素ID給他們的父母。 (注意:$(this).attr("id")只是寫this.id的真正迂迴的方式。)


邊注:當使用自定義屬性,堅持the data-* prefix以避免與HTML定義的屬性(現在和將來)的衝突。