Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
Variable local no visible en la función de devolución de llamada de javascript

Tengo varias páginas con columnas ordenables, el código es como

 var invert = $('...').val(); var column = $('...').val(); $list.children().detach().sort(function (a,b) { var aa = $(a).find('.'+column).html().trim(); var bb = $(b).find('.'+column).html().trim(); // conversions cut off return invert ? aa-bb : bb-aa; }).appendTo($list);

donde columna es una clase de la columna a ordenar. Me gustaría convertirlo en una función de devolución de llamada en lugar de repetir el código

 function column_sorter(a, b) { var aa = $(a).find('.'+column).html().trim(); // .... } $list.children().detach().sort(column_sorter).appendTo($list);

pero la columna es inaccesible aquí (y probablemente también se invierta). ¿Hay alguna posibilidad de utilizar la función aquí?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Hay alguna posibilidad de utilizar la función aquí?

Tendrás que pasar esa información contextual a la función. A menudo, la forma de hacerlo es tener una función que devuelva otra función y sort llamar a la función devuelta:

 function column_sorter(column/*, ...anything else it needs...*/) { return function(a, b) { var aa = $(a).find('.'+column).html().trim(); // .... }; } $list.children().detach().sort(column_sorter(column/*, ...*/)).appendTo($list);

Nota al margen: si la función necesita que this se controle por sort (por lo general, no es así), probablemente la convertiría en una función de flecha:

 function column_sorter(column/*, ...anything else it needs...*/) { return (a, b) => { var aa = $(a).find('.'+column).html().trim(); // .... }; } $list.children().detach().sort(column_sorter(column/*, ...*/)).appendTo($list);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Es tan simple como esto

 function sort_function(a, b, c) { console.log(c); return a - b; } const arr = [4, 1, 5, 3, 2]; c = "test"; arr.sort((a, b) => sort_function(a, b, c)); console.log(arr);

Así que podrías usarlo como

 function column_sorter(a, b, c) { var aa = $(a).find('.'+column).html().trim(); // .... } $list.children().detach().sort((a, b) => column_sorter(a, b, c)).appendTo($list);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda