2011-05-03 91 views
8

隨着新版本的jQuery v1.6.prop()方法的增加。.prop()與.data()

使用.prop()超過.data()是否存在內在差異?

我在文檔中看到,不刪除屬性可能導致IE9之前版本的IE發生內存泄漏。但是,使用新的prop()方法還有其他性能問題或其他問題嗎?

語法從網站:

var $para = $("p");  
$para.prop("luggageCode", 1234); 

在以下幾點:

var $para = $("p"); 
$para.data("luggageCode", 1234); 

回答

14

我相信託是用於設置有效的HTML文檔的屬性,而不是任意的數據。我建議你繼續使用行李類型信息的數據。

+0

這是我的想法,但你能否引用任何支持這種說法的文檔?這也不能回答有關性能問題的問題。 – styfle 2013-02-06 19:47:53

+0

不能超越http://api.jquery.com/ – Andiih 2013-02-07 11:15:11

+0

另外數據(「foo」,「bar」)會設置而不是 Andiih 2014-11-25 17:14:55

2

我可能要對這個錯誤的,但似乎.data()可以枚舉,而.prop()不能

Live Demo

var $p = $("<p>"); 
    $p.data('luggagecode', '12345'); 
    $p.data('luggagecode_backup', '54321'); 

for (var key in $p.data()) { // generates two alerts 
    var value = $p.data(key); 
    alert('DATA | '+key+' = '+value); 
} 

var $p2 = $("<p>"); 
    $p2.prop('luggagecode', '12345'); 
    $p2.prop('luggagecode_backup', '54321'); 

for (var key in $p2.prop()) { // no alerts 
    var value = $p2.prop(key); 
    alert('PROP | '+key+' = '+value); 
} 
+3

我不會因爲你處於正確的軌道而讓你失望,但屬性絕對可以[enumerated](http://jsfiddle.net/h3uee/)。我認爲你應該修改這個答案,並說'.data()'是用於用戶定義的數據,'.prop()'實際上是添加/更新DOM元素的一個屬性。 – styfle 2013-02-06 19:43:51

5

我認爲它歸結到DOM節點的屬性,並表示它的Javascript對象的屬性之間的區別。

的文件沒有指定如何其中.data()數據存儲,讓你看到它的相關的jQuery對象的屬性可能只是一個實現細節的事實。 jQuery將被允許將其絕對保存在其他任何地方。

相比之下,.prop()當然明確地涉及DOM節點的屬性。