我想删除HTML DOM对象的ID,其中包含特殊字符(点,逗号等)。我试图使用这个代码来逃避这些字符,但是它没有工作(元素没有被删除):
var file_html_id ="#"+ filename.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, "\\\\$&");
console.log(file_html_id);
$(file_html_id).remove();
其中filename是ID。值得一提的是,带有转义字符的字符串会按预期显示。如果我“硬编码”那个字符串它工作正常...所以问题可能在哪里?
答案 0 :(得分:2)
您可以尝试其他几种方法,而不是试图逃避角色:
在id字符串上使用jQuery's escapeSelector()。这将转义字符串中的任何特殊字符。注意在jQuery的v3.0中添加了escapeSelector
。查看他们如何进行转义here
如果有兴趣的话。
$( '#'+ $.escapeSelector('theText') )
使用attribute selector而不是尝试转义ID选择器的所有可能字符
$('[id="idHere"]')
然而,如果由于某些奇怪的原因,您有多个具有相同ID的元素,则会选择多个元素。
演示
var id = "some,weird®,id";
var id2 = "some,other®,id";
$('#'+ $.escapeSelector(id2) ).css({border:'1px solid green'});
$('[id="'+id+'"]').css({border:'1px solid red'});
&#13;
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div id="some,weird®,id"></div>
<br/>
<div id="some,other®,id"></div>
&#13;