caracteres especiales en id de tags html

En el código html estoy usando el código para obtener texto ahora necesita obtener su valor que se ingresa en el campo de texto. Estoy usando jquery para hacer eso:

 $( document ).ready( function() { $( ".bid" ).click( function() { idVal = this.id bidID = "#" + idVal + "bid" spanID = "#" + idVal + "cbid" bidValue = $(bidID).val(); alert(idVal) alert(bidID) alert(bidValue) //this alert says undefined $( spanID ).html( ' ' ).load( '{% url online_machines %}?id=' + idVal + '&bidvalue=' + bidValue); }); }); 

Al hacer esto, obtengo el error de valor indefinido. Traté de eliminar los caracteres especiales de la identificación para obtener su valor. Pero necesito la identificación con caracteres especiales. ¿Cómo puedo obtener su valor usando jquery?

Intenta escapar de él:

 $('#abc\\@def.com').val(); 

Primer párrafo de http://api.jquery.com/category/selectors/

En lugar de intentar ID usando #, intente hacer coincidir un atributo como este,

 $('[id=ID]') 

o

 $('[id='+ID+']') 

entonces en lugar de

 bidID = "#" + idVal + "bid" 

puedes probar

 bidID = "[id=" + idVal + "bid]" 

Parece que JQuery tiene un método útil para esto a partir de la versión 3 llamada escapeSelector .

$('#' + $.escapeSelector(my_id_with_special_chars));

https://api.jquery.com/jQuery.escapeSelector/

Intente esto, no al 100% si esto es lo que busca. Házmelo saber:

 $( document ).ready(function() { $(".bid").click(function() { idVal = $(this).attr('id'); bidID = "#" + idVal + "bid"; spanID = "#" + idVal + "cbid"; bidValue = bidID.val(); alert(idVal); alert(bidID); alert(bidValue); spanID.html(' ').load('{% url online_machines %}?id=' + idVal + '&bidvalue=' + bidValue); }); }); 

$(document.getElementById('abc@def.com')) también funciona.

Da comillas simples a ambos lados de la identificación, así:

 $('#abc@def.com').val()