.prop()与.data()

时间:2011-05-03 17:56:57

标签: jquery

使用新版jQuery v1.6并添加.prop()方法。

使用.prop()而不是.data()是否存在内在差异?

我在文档中看到,在IE9之前的IE版本中,不删除属性可能会导致内存泄漏。但使用新的prop()方法是否存在任何其他性能问题或其他问题?

网站上的语法:

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

以下内容:

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

3 个答案:

答案 0 :(得分:14)

我认为prop用于设置有效的HTML文档属性,而不是任意数据。我建议你继续使用luggageCode类型信息的数据。

答案 1 :(得分:6)

我认为它归结为DOM Node的属性与表示它的Javascript对象的属性之间的区别。

文档未指定 .data()数据的存储方式,因此您将其视为相关jQuery的属性对象可能只是一个实现细节。 jQuery也可以在任何其他地方存储它。

相比之下,.prop()当然明确涉及DOM节点的属性。

答案 2 :(得分: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);
}