为什么jQuery.data和.data()的行为不同并且访问不同的数据?

时间:2017-11-15 16:31:28

标签: javascript jquery html

我曾经认为jQuery.data.data()使用相同的数据,但只有两种方法可以访问这些数据。经过一些测试后我发现,事实并非如此。

data()从DOM的数据属性中获取数据,并将新的或更改的数据附加到DOM-Element,而不是在DOM本身中显示。

jQuery.data的行为非常相似,但是没有从data-attribute获取数据。

两种方法都不会访问与DOM-Element相同的附加数据。

var newDiv = $("#newDiv");
var temp = newDiv.data("test");
console.log(temp); //is default
console.log(newDiv.data("test")); //also default
console.log($.data(newDiv, "test")); //undefined

//change jQueryElement.data
newDiv.data("test", "ElementChange");
console.log(newDiv.data("test")); //now ElementChange

//get and change jQuery.data
console.log($.data(newDiv, "test")); //still undefined
$.data(newDiv, "test", "directChange");
console.log($.data(newDiv, "test")); //now directChange

console.log(newDiv.data("test")); //still ElementChange

我在这里做了一个jsfiddle:https://jsfiddle.net/mgpfw2rr/

现在我想知道为什么有两种方法,它们的启动数据差别不大?在stackoverflow的另一个问题,答案是,两者做同样的事情(Differences between jQuery.data() and .data()?)似乎不正确或?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

正如Andreas所提到的,它甚至在文档中表示jQuery.data没有检索数据,而.data()只是一种新的更舒适的方法。

谢谢,我以为会有更多"更多"并且没有在文档中注意到这一点!