Recibo el error "RangeError no capturado: el tamaño máximo de pila de llamadas excedido" en cromo. aquí está mi función jQueryChrome/jQuery Range Range no detectado: el tamaño máximo de pila de llamadas superó
$('td').click(function() {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
Tenga en cuenta que hay decenas de miles de celdas en la página. Sin embargo, generalmente asocio desbordamientos de pila con recursión y en este caso, hasta donde puedo ver, no hay ninguno.
¿La creación de una lambda como esta genera automáticamente una carga de cosas en la pila? ¿Hay alguna forma de evitarlo?
Por el momento la única solución que tengo es generar los eventos onclick explícitamente en cada celda cuando se renderiza el HTML, lo que hace que el HTML sea mucho más grande.
¿Estás seguro de que la función foo no se repite? ¿El error aún ocurre si elimina esa llamada de función? – sth
¿Funciona como se esperaba en otros navegadores? ¿Se produce este error cuando comenta la línea 'foo ($ ('# docId'). Val(), $ (this) .attr ('id'));'? - Consejo de rendimiento extra: almacena en caché el resultado de los selectores; por ejemplo, guarda el resultado de '$ (this)' en una variable y luego utilízalo en tu controlador según sea necesario. – WTK
Tengo un problema similar pero necesito eventos de mouseenter. Cuando uso el cuerpo o la mesa, no obtengo suficientes eventos. – ericslaw