html标记的id中的特殊字符

在html代码中,我现在使用代码<input type = "text" id = "abc@def.com">来获取文本,它需要获取在文本字段中input的值。 我正在使用jQuery来做到这一点:

 $( 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( '&nbsp;' ).load( '{% url online_machines %}?id=' + idVal + '&bidvalue=' + bidValue); }); }); 

通过这样做,我得到的值错误未定义。 我试图从id中删除特殊字符来获得它的值。 但是我需要带有特殊字符的ID。 我怎样才能得到它的价值使用jQuery?

尝试转义它:

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

http://api.jquery.com/category/selectors/的第一段;

而不是尝试使用#编号,尝试这个匹配这样的属性,

 $('[id=ID]') 

要么

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

所以而不是

 bidID = "#" + idVal + "bid" 

你可以试试

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

有一个在这个镜头,而不是100%,这是否是你以后。 让我知道:

 $( 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('&nbsp;').load('{% url online_machines %}?id=' + idVal + '&bidvalue=' + bidValue); }); }); 

$(document.getElementById('abc@def.com'))也可以。

它看起来像JQuery有一个有用的方法,从版本3称为escapeSelector

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

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

给双方的单引号,如下所示:

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