Quiero pasar (devolver) el valor del filtro de datos y el texto secundario , puedo pasar el valor del filtro de datos pero no puedo pasar el texto secundario. Mi HTML y JQuery de la siguiente manera:
$(document).ready(function() { $('.sidebar-filter').on('click', function() { var filterobj = {}; $(".sidebar-filter").each(function(index, ele) { var filterval = $(this).children('a').text(); var filterkey = $(this).data('filter'); filterobj[filterkey] = Array.from(document.querySelectorAll('li[data-filter=' + filterkey + '].active')).map(function(el) { return ele.value; }); }); console.log(filterobj); }); }); <ul> <li class="sidebar-filter " data-filter="category" data-value="1"> <a href="#">Item Name</a> </li> </ul>Mi regreso será como:
categoría: Matriz [ indefinido ]
Quiero valor dentro de la matriz en lugar de indefinido.
Tus li s no tienen value de atributo, en realidad quieres leer data-value atributo, puedes lograr tu objetivo convirtiendo return ele.value; para return el.getAttribute('data-value');
$(document).ready(function() { $('.sidebar-filter').on('click', function() { var filterobj = {}; $(".sidebar-filter").each(function(index, ele) { var filterval = $(this).children('a').text(); var filterkey = $(this).data('filter'); filterobj[filterkey] = Array.from(document.querySelectorAll('li[data-filter=' + filterkey + '].active')).map(function(el) { return el.getAttribute("data-value"); }); }); console.log(filterobj); }); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script> <ul> <li class="sidebar-filter active" data-filter="category" data-value="1"> <a href="#">Item Name</a> </li> </ul>Publicar respuesta, podría ser de ayuda para alguien más también
filterobj[filterkey]= Array.from(document.querySelectorAll ('li[data-filter=' + filterkey+'].active')).map(function(el){ return $(el).data("value") });