Селектор Jquery, когда данные атрибута не пусты

#javascript #html #jquery

#javascript #HTML #jquery

Вопрос:

У меня возникла следующая проблема. Я разрабатываю календарь с форматами дат, и поэтому на данный момент мне нужно иметь возможность выбирать все элементы, для которых их атрибут данных не является пустым, в данном случае na me атрибута data-hueco .

 <p class="huecoDisponible" data-centro="HVA" data-hueco="0000000367#20201120#161000" style="cursor:pointer;">16:10</p>
 

Я уже пробовал определенные вещи, такие как:

 if(!$('.huecoDisponible').is(":empty")){
   console.log(!$('.huecoDisponible').is(":empty"));
}
 

Очевидно, что этот подход не работает.
Я также попробовал другой вариант, который:

 console.log($('.huecoDisponible').attr(':not([data-hueco=""])'));
console.log($('.huecoDisponible:not([data-hueco=""])'); 
 

В этом случае я не совсем уверен, правильно ли выполняется выбор.
Наконец, чтобы дать вам еще один совет, я создаю все эти абзацы с помощью следующей функции, которая вызывается внутри метода AJAX. Внутри я создаю html-элементы, добавляя их к 7 различным идентификаторам, которые присутствуют каждый день недели.
У каждого p элемента есть два data-attributes .

               function filtrarPintarNuevoHueco(result, week){
                html = '';
                for (var b = 0; b < 7; b   ) {
                    var diaFiltro = $('#' arr[b]).attr("data-date");
                    let toto = result.citas.filter(c => c.fecha == diaFiltro);
                    for(var i = 0; i < toto.length; i  ) {
                        let nuevoHueco = toto[i].fecha;
                        let codigoCita = toto[i].numcita;
                        let nuevoHuecoHora = toto[i].hora;
                        var hour = nuevoHuecoHora.substring(0, 2);
                        var min = nuevoHuecoHora.substring(2, 4);
                        let codigoCentro = toto[i].centro;
                        let nuevoHuecoHoraFormatted = hour   ':'   min;
                        html = '<p class="huecoDisponible" data-centro="'   codigoCentro   '"  data-hueco="'  codigoCita  '" style="cursor:pointer;">'  nuevoHuecoHoraFormatted "</p>" ;
                        $("#"   arr[b]  ' div').append(html);
                    }
                }

                $('.huecoDisponible').on('click', function(e){
                    e.preventDefault();
                    e.stopPropagation();
                    $('.huecoDisponible').removeClass("huecoDisponible_active");
                    $(this).addClass("huecoDisponible_active");
                    let dataHueco = $(this).attr("data-hueco");
                    let dataCentro = $(this).attr("data-centro");
                    let diaNombre = $(this).parent().parent().find("h3")[0].textContent;
                    let diaFecha =  $(this).parent().parent().find("h4")[0].textContent;
                    let horaCita = $(this).attr("data-hueco").split("#")[2];
                    let hora = horaCita.substring(0,2);
                    let min = horaCita.substring(2,4);
                    let horaFormatted = hora   ":"   min;
                    reservarCitaMasHuecos(dataHueco, dataCentro, diaNombre, diaFecha, horaFormatted);
                });
            }



  const devolverHuecosSemana = (especialista, diaSapLunes) => {
            $.ajax({
                url: '@Url.ActionLink("HuecosLibres", "HandlerEntityDbHub")',
                type: "POST",
                data: {"modo":"", "centro":"", "medico": especialista.idEspecialista, "fecha": diaSapLunes }
            }).done(function (result, status, xhr) {
                //tenemos que comprobar que estamos en el especialista que corresponde
                 
                if (result == undefined) {
                    alert("Este médico no tiene huecos");
                } else {
                    result = JSON.parse(result);
                    if(result.citas.length > 0){
                        filtrarPintarNuevoHueco(result, diasSemana.week); // IT IS CALLED INSIDE HERE, PRINTS THE APPOINTMENT FOR A CERTAIN DAY OF THE WEEK
                    }else{
                        alert("Este médico no tiene huecos");
                    }
                }
            }).fail(function (jqXHR, textStatus, errorThrown) {
                alert("Este médico no tiene huecos");
            });
        }
 

Если кто-нибудь может дать мне несколько советов о том, как поступить с остальным, я был бы вам очень признателен.
Спасибо вам

Комментарии:

1. Привет, вы проверяете значение data-attr внутри этого обработчика, т.е. : $('.huecoDisponible').on('click', function(e){.. ? Кроме того, вы пробовали так: console.log($(".huecoDisponible").attr('data-hueco') != "") ?

2. Я проверяю его внутри обработчика, но на самом деле я выполняю проверку после того, как все html-элементы были сгенерированы с помощью . attr('data-hueco') . Я опубликую свой ответ завтра, поскольку я уже нашел, в чем проблема. Спасибо за подсказку!