html标签的id中的特殊字符

时间:2011-07-13 07:24:22

标签: jquery html

在html代码中,我正在使用代码 <input type = "text" id = "abc@def.com">获取文字 现在需要获取在文本字段中输入的值。我正在使用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得到它的值?

7 个答案:

答案 0 :(得分:28)

不要使用#尝试ID,请尝试使用此匹配属性,

$('[id=ID]')

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

所以而不是

bidID = "#" + idVal + "bid"

你可以尝试

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

答案 1 :(得分:24)

尝试转义它:

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

http://api.jquery.com/category/selectors/

的第一段

答案 2 :(得分:6)

从版本3开始,看起来JQuery有一个有用的方法,名为escapeSelector

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

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

答案 3 :(得分:3)

$(document.getElementById('abc@def.com'))也有效。

答案 4 :(得分:0)

请注意这一点,而不是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);
    });
});

答案 5 :(得分:0)

使用功能CSS.escape()选择该DOM元素。 对于ID abc@def.com,可以使用以下代码。

$("#" + CSS.escape('abc@def.com'));

答案 6 :(得分:0)

下面的解决方案对我有用,很干净:

//your HTML id has special characters: 
var option= "Some option with (parenthesis or @ )";
//use this type of jquery query:
$(`[id="order_${option}"]`).prop('checked',true)