在我的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’”)我找不到元素?
发布于 2014-12-10 17:49:04
当使用jQuery.data()将数据分配给元素时,不会更新元素的data-*属性,因此不能使用属性选择器来选择元素。
数据属性在第一次访问数据属性时被提取,然后不再被访问或变异(然后所有数据值都存储在jQuery内部)。
为了选择这些元素,可以使用带有自定义函数的filter()函数:
jQuery("div").filter(function() {
return $(this).data("types") === "row";
});注意:如果您也在使用jQuery UI,您会发现:data(key)选择器很有用。
发布于 2014-12-10 17:51:47
data()方法只在最初从元素中读取时才使用DOM。当您使用它来添加或更改元素的数据时,它会将数据放入其内部内存中,而不会修改DOM。所以DOM选择器找不到它。来自文档
数据属性在第一次访问数据属性时被提取,然后不再被访问或变异(然后所有数据值都存储在jQuery内部)。
要查找所有元素,可以使用.filter()
jQuery("div").filter(function() {
return $(this).data("types") == "row";
});https://stackoverflow.com/questions/27407512
复制相似问题