我正在尋找一個更好的方式來做到這一點:如何用jQuery.data遞歸地擴展數據?
var extended = $.extend(entity.data('namespace'), {
att1 : whatever,
att2 : whatever
});
entity.data('namespace', extended);
有什麼建議?
我正在尋找一個更好的方式來做到這一點:如何用jQuery.data遞歸地擴展數據?
var extended = $.extend(entity.data('namespace'), {
att1 : whatever,
att2 : whatever
});
entity.data('namespace', extended);
有什麼建議?
.data()
不知道如何擴展。如果你想擴展,你必須用jquery的.extend()
方法自己做。遞歸擴展可以通過將true
作爲第一個參數來實現,所以:
entity.data('namespace', $.extend(true, entity.data('namespace'), { ... }));
這的確如此,jquery文檔在這一點上令人困惑,因爲它讀取'在jQuery 1.4.3中用.data設置元素的數據對象(obj)擴展了先前存儲的元素。 – chrishiestand 2012-11-23 22:14:53
jQuery的擴展將修改第一個對象,所以你可以只做$ .extend(true,$(el).data('namespace'),{new:'stuff })。@chrishiestand,我同意文檔很混亂,我認爲這意味着額外的數據鍵被擴展,允許你設置$(el).data('a',1),然後$(el).data(' b',2)不刪除a。 – Synexis 2013-05-02 04:36:17
這是什麼遞歸? – Amadan 2011-06-10 21:37:41
我使用jQuery.extend()文檔中的術語(請參閱http://api.jquery.com/jQuery.extend/)。這裏的「遞歸」是指擴展嵌套對象(本例中的最高級別對象是'{namespace:{att1:val,att2:val}}')。 – jkjenner 2011-06-10 21:39:25
如果extend的第一個參數是「true」,'extend'就只是遞歸的,而在你的代碼片段中情況並非如此,這反過來使你的問題變得相當混亂...... – Amadan 2011-06-10 21:45:14