jQuery 数据选择器找不到存在的元素
jQuery data selector doesn't find element that exists
我有调度程序 table,其中包含代表天数的 div。每天都有数据属性日期,格式为:
$('#scheduler-table > div.row > div:nth-child(4) > div').data()
{date: "8.09.2017", day: 3}
从开发者工具复制的直接选择器。
但是当我尝试使用带有数据属性的选择器时:
$('#scheduler-table').find("[data-date='8.09.2017']").data();
它没有找到任何东西。我的选择器有什么问题?
我假设您只想从特定元素中检索 data-date
的值?
$('#scheduler-table').each(
var mydate = $('#scheduler-table > div.row > div:nth-child(4) > div').attr('data-date')
console.log(mydate);
编辑后的答案:
function SearchByDate(myDate){
var mySelectedElement;
$('[data-date]').each(function() {
if ($(this).val(myDate)){
mySelectedElement = $(this);
}
});
}
SearchByDate("8.09.2017");
所以基本上,您使用 data-date
搜索所有属性,如果它的值对应于 SearchByDate
中的属性(您随时调用的函数),它会将结果元素分配为mySelectedElement
.
当您使用 data()
的 setter 来应用值时经常会出现此问题,因为它不会更新 DOM,因此属性选择器基于 data
属性将找不到该元素。该值存储在一个对象中 jQuery 作为性能目的的缓存维护。
要解决此问题,请使用 filter()
查找元素:
var data = $('#scheduler-table > div.row > div:nth-child(4) > div').filter(function() {
return $(this).data('date') == '8.09.2017';
}).data();
我有调度程序 table,其中包含代表天数的 div。每天都有数据属性日期,格式为:
$('#scheduler-table > div.row > div:nth-child(4) > div').data()
{date: "8.09.2017", day: 3}
从开发者工具复制的直接选择器。
但是当我尝试使用带有数据属性的选择器时:
$('#scheduler-table').find("[data-date='8.09.2017']").data();
它没有找到任何东西。我的选择器有什么问题?
我假设您只想从特定元素中检索 data-date
的值?
$('#scheduler-table').each(
var mydate = $('#scheduler-table > div.row > div:nth-child(4) > div').attr('data-date')
console.log(mydate);
编辑后的答案:
function SearchByDate(myDate){
var mySelectedElement;
$('[data-date]').each(function() {
if ($(this).val(myDate)){
mySelectedElement = $(this);
}
});
}
SearchByDate("8.09.2017");
所以基本上,您使用 data-date
搜索所有属性,如果它的值对应于 SearchByDate
中的属性(您随时调用的函数),它会将结果元素分配为mySelectedElement
.
当您使用 data()
的 setter 来应用值时经常会出现此问题,因为它不会更新 DOM,因此属性选择器基于 data
属性将找不到该元素。该值存储在一个对象中 jQuery 作为性能目的的缓存维护。
要解决此问题,请使用 filter()
查找元素:
var data = $('#scheduler-table > div.row > div:nth-child(4) > div').filter(function() {
return $(this).data('date') == '8.09.2017';
}).data();