首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用data = value获取所有元素

使用data = value获取所有元素
EN

Stack Overflow用户
提问于 2014-12-10 17:45:25
回答 2查看 767关注 0票数 0

在我的JavaScript类中,我遇到了以下问题:

代码语言:javascript
复制
//===== i set this data record
jQuery(element).data("types", "row");
console.log(jQuery(element).data("types")); // writes "row" (the element is a div)

//==== into other method
//==== i want find all element with data-types = row
console.log(jQuery("[data-types='row']").length); // writes 0

jQuery("div").each(function(i,e){
    console.log(i, jQuery(e).data(), jQuery(e).attr("id")); // writes object{type:row}
});

为什么使用这个jQuery(“数据类型=‘row’”)我找不到元素?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-10 17:49:04

当使用jQuery.data()将数据分配给元素时,不会更新元素的data-*属性,因此不能使用属性选择器来选择元素。

数据属性在第一次访问数据属性时被提取,然后不再被访问或变异(然后所有数据值都存储在jQuery内部)。

为了选择这些元素,可以使用带有自定义函数的filter()函数:

代码语言:javascript
复制
jQuery("div").filter(function() {
    return $(this).data("types") === "row";
});

注意:如果您也在使用jQuery UI,您会发现:data(key)选择器很有用。

票数 3
EN

Stack Overflow用户

发布于 2014-12-10 17:51:47

data()方法只在最初从元素中读取时才使用DOM。当您使用它来添加或更改元素的数据时,它会将数据放入其内部内存中,而不会修改DOM。所以DOM选择器找不到它。来自文档

数据属性在第一次访问数据属性时被提取,然后不再被访问或变异(然后所有数据值都存储在jQuery内部)。

要查找所有元素,可以使用.filter()

代码语言:javascript
复制
jQuery("div").filter(function() {
    return $(this).data("types") == "row";
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27407512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档