jQuery数据选择器找不到存在的元素

时间:2017-09-06 08:41:30

标签: jquery jquery-selectors

我有调度表,其中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();

它找不到任何东西。我的选择器出了什么问题?

2 个答案:

答案 0 :(得分:0)

我假设你想要的只是从特定元素中检索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

答案 1 :(得分:0)

当您使用\i demo.sql的setter来应用值时,通常会发生此问题,因为它不会更新DOM,因此基于data()属性的属性选择器将找不到该元素。相反,该值存储在jQuery维护的对象中,以用于性能目的。

要解决此问题,请使用data查找元素:

filter()