如何获得id为dot和dollar符号的dom元素的值

时间:2016-05-19 08:34:21

标签: javascript jquery html angularjs

我遇到的问题是获取id包含特殊字符.$符号的元素的值。

我对元素的id是"XS_19MAY2016_012720_311.04$_cal"我使用jQuery的语法:

$("#"+xyz+"_cal").val()   where xyz is variable having above id.

我收到的错误是:

Error: Syntax error, unrecognized expression: #XS_19MAY2016_012720_311.04$_cal.

我做错了什么或我需要做些什么来纠正它。

3 个答案:

答案 0 :(得分:6)

逃避角色:



var foo = 'XS_19MAY2016_012720_311.04$';
$('#' + foo.replace(/[.$]/g, '\\$&') + '_cal').text('foo')

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="XS_19MAY2016_012720_311.04$_cal"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:5)

你可以用这种方式做到这一点(没有符号转义)。

&#13;
&#13;
$(function() {
  
  var 
    id = "XS_19MAY2016_012720_311.04$_cal",
    text;

  text = $('[id="' + id +'"]').text();
  
  alert(text);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="XS_19MAY2016_012720_311.04$_cal">Yay!</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你需要告诉jquery字符串绝对是一个'ID',而不是一个类。

HTML ID属性不能包含空格,且必须至少包含一个字符。但为了兼容性,最好避免使用'_','。'

这里使用Javascript内置方法,并将DOM节点转换为Jquery对象。它看起来多余,但它稳定且易于阅读。

$(function() {


  var xyz = 'XS_19MAY2016_012720_311.04$';
  e = $(document.getElementById(xyz + '_cal'));

  console.log(e.text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="XS_19MAY2016_012720_311.04$_cal">
  hello
</div>