2016-03-28 43 views
3

我試圖從HTML div元素中獲取類名並將其添加到現有對象。令人生氣的是我可以讓它工作,但是我所說的每個語法錯誤檢查器都說代碼是錯誤的。我已經非常徹底地搜索了,但我甚至不知道如何解釋這個問題。下面是這不會引發錯誤的代碼:嘗試將HTML類屬性添加到jQuery對象

$.each($(objDiv).children('div'), function(){ 
    var field = $(this).attr('class'); 
    var value = $(this).text(); 
    var add = { field : value }; 
    $.extend(obj, add); 
}); 

但問題是,它使得「場」中,作爲該領域

對象 {標籤一個字符串:「level3a」 : 「可持續的專業知識後,權威性增強客戶爲中心的交付。」}

對象 {標籤: 「level3a」 場:「完全接受點擊和灰漿數據,無需泛在的元服務」。}

不是類名稱值。要解決這個問題,我在方括號內的 「場」:

$.each($(objDiv).children('div'), function(){ 
    var field = $(this).attr('class'); 
    var value = $(this).text(); 
    var add = { [field] : value }; 
    $.extend(obj, add); 
} 

,它給我,我要找的結果,

對象 {標籤: 「level3a」 ClassA的: 「權威性增強客戶爲中心的交付可持續的專家意見後。」}

對象 {標籤: 「level3a」 ClassB的:「完全擁抱CLI沒有普遍存在的元服務的實體數據「。}

但是不知怎的,這是不正確的。任何想法,我在做什麼錯在這裏,或更好的方式來實現這一目標?

回答

3

雖然我不能告訴你爲什麼這是錯誤的(或爲什麼它的工作原理),我可以告訴你一個更「合適」的方式來做到這一點。

你會聲明add作爲一個空對象,像這樣:add = {};

然後你可以在字段作爲屬性添加到它像這樣:add[field] = value;

這會給你一個對象add與模型:{ ClassA: "Your text here" }

有關詳細信息,請參閱屬性訪問器的類型:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors。以上詳細描述的方法使用「括號標記」

編輯:所以顯然ECMA6你寫的是有效的JavaScript,使用什麼叫做ComputedPropertyName。然而,它尚未被所有瀏覽器支持,所以直到對ECMA6的瀏覽器支持變得更好,最好使用括號表示法屬性名稱方法。看到這個答案的更多信息:https://stackoverflow.com/a/2274327/2748503

+0

這讓我一個工作解決方案 - 感謝您的答案和額外的信息! –

+0

嘿,看看我的編輯,我找到了你的代碼爲什麼工作的答案。 –