variable quitar error comparar como javascript jquery undefined typeerror

javascript - quitar - No se detectó TypeError: no se puede llamar al método ''toLowerCase'' de undefined



undefined javascript error (4)

Me encontré con un error muy vago al hacer alguna manipulación simple de DOM jQuery.

La línea que desencadenó el error es la siguiente:

$(this).closest(''tr'').remove();

El error, como se indica en el título, es:

No se detectó TypeError: no se puede llamar al método ''toLowerCase'' de undefined

en el archivo: jquery-1.6.2.js .

Ya probé con jQuery 1.6.3 y jQuery 1.5.1, pero nada cambió. Sigo recibiendo el error.

La línea de arriba está vinculada a un botón que, al hacer clic, envía una solicitud AJAX POST, luego, cuando tiene éxito, elimina su propia <tr> . Ya lo he intentado de otra manera haciendo:

$(this).parent().parent().remove() pero para mi sorpresa, esto no hizo nada.

Estoy usando Chrome, en caso de que importe, pero me sale el mismo error en FF.

EDITAR:

Este es mi código:

$(".remove").live(''click'', function(e) { var str = $(this).attr(''id'').match(//[(.*?)/]/[(.*?)/]/); var type = str[1]; var id = str[2]; // IF I PUT THE remove() HERE, IT WORKS. $.ajax({ type: ''POST'', url: ''/admin/ajax_remove_event_detail'', data: {type: type, id: id}, success:function(res) { if(res) { $(this).closest(''tr'').remove(); // this gives me an error } else { // error handling } } }); e.preventDefault(); });

Si pongo el remove () fuera de if en algún lugar, funciona. ¿Por qué no funciona cuando está dentro de la llamada ajax / si? ¿No tiene ningún sentido para mí? :(

¿Alguna ayuda aquí? Gracias por adelantado.


Dentro de su solicitud, $ (esto) no es el elemento .remove . Es un problema de cierre.

Así que puedes asignar $ (esto) a una variable antes y llamarla después


No sé cuál espera que sea el valor de this en su manejador de "éxito", pero apuesto a que no es lo que piensa. Guarde this fuera de la llamada "$ .ajax ()":

var clicked = this; $.ajax( // ... success: function(res) { if (res) { $(clicked).closest(''tr'').remove(); } else { // ... } } );


Obtuve exactamente el mismo error en la solicitud $ .get () .

Para mí este es el error más extraño en jQuery (mi versión 1.8.3).

Mi razón para este error fue el elemento TD con el ID establecido en "nombreNodo" .

Después de cambiar el valor de ID a otra cosa, el error desaparece.

Original:

<td id="nodeName"></td>

Nuevo:

<td id="nodeNameValue"></td>


// assign this to a variable var val = this; // Use $(val).closest(''tr'').remove(); // It worked for me

En lugar de :

$(this).closest(''tr'').remove();