#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')
. Я опубликую свой ответ завтра, поскольку я уже нашел, в чем проблема. Спасибо за подсказку!