簡體   English   中英

嘗試向jQuery對象添加HTML類屬性

[英]Trying to add an HTML class attribute to jQuery object

我正在嘗試從HTML div元素中獲取類名,並將其添加到現有對象中。 令我發狂的是我可以使它工作,但我說的每個語法錯誤檢查都說代碼是錯誤的。 我搜索得非常徹底,但我甚至不知道該怎么說這個問題。 這是不拋出錯誤的代碼:

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

但問題是它將“字段”作為字段的字符串

object {label:“level3a”, field :“在可持續專業知識之后,以權威方式增強以客戶為中心的可交付成果。”}

object {label:“level3a”, field: “完全接受點擊實體數據而無需普遍存在的元服務。”}

不是類名值。 為了解決這個問題,我將括號放在“字段”周圍:

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

它給了我正在尋找的結果,

object {label:“level3a”, ClassA :“在可持續專業知識之后,以權威方式增強以客戶為中心的可交付成果。”}

object {label:“level3a”, ClassB: “完全接受點擊實體數據而無需普遍存在的元服務。”}

但不知何故,這是不正確的。 關於我在這里做錯了什么的想法,或者更好的方法來實現這個目標?

雖然我不能告訴你為什么那是錯的(或者為什么它有效),我可以告訴你一個更“正確”的方法來做到這一點。

您將add為空對象,如下所示: add = {};

然后你可以像這樣添加字段作為屬性: add[field] = value;

這將為您提供模型的對象add{ ClassA: "Your text here" }

有關詳細信息,請參閱屬性訪問者的類型: https//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors 上面詳述的方法使用“Bracket Notation”

編輯:顯然在ECMA6中你所寫的是有效的javascript,使用的是所謂的ComputedPropertyName 然而,所有瀏覽器都不支持它,因此在ECMA6的瀏覽器支持變得更好之前,最好使用括號 - 表示法屬性名稱方法。 有關詳細信息,請參閱此答案: https//stackoverflow.com/a/2274327/2748503

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM