我有DOM元素,其id可能包含'/'。 我想使用以下格式,因为我需要所有具有id的元素 对于Ex:
jQuery('[id=activities/_terp_count]') //returns null
请注意,
jQuery('#activities/_terp_count') //returns null
答案 0 :(得分:7)
上面的解决方案对我有用,但值得注意的是,通过id获取元素的本机方法有一些优点:即,在jQuery的情况下,document.getElementById('strin / g')将在这里工作( “strin / g”)将失败(因为jQuery使用一个令牌解析器,在没有特殊处理的情况下阻塞“/”)。获取该元素的jQuery包装版本:
jQuery(document.getElementById('activities/_terp_count'));
事实上,如果你不能总是控制到实际id的确切内容(例如,如果你试图在页面中搜索具有在url #hash中指定的内容的id的元素),那么,a)要小心,因为那可能很危险; b)注意jQuery(document.getElementById(window.location.has.replace(“#”,'')));将比jQuery(“#”+ window.location.has.replace(“#”,''))更可靠地工作;因为它不会轻易破坏。
示例:
jQuery(document.getElementById("_=_")) //<--- null, or the actual element, if you have one which said crazy, non-compliant id
jQuery("#_=_") //<--Uncaught Error: Syntax error, unrecognized expression: #_=_
如果您不希望您的用户仅通过输入特定的url参数或哈希来破坏您的代码,请尽可能避免使用该用例,如果不能,请使用本机ID元素。
答案 1 :(得分:4)
jQuery('[id=activities/_terp_count]')
确实应该找到它(例如 - http://jsfiddle.net/jXsvA/),尽管它比ID直接搜索慢。如果你能以某种方式限制选择器会更快,例如jQuery('div[id*=activities/_terp_count]')
,如果你知道标签总是<div>
的话。
答案 2 :(得分:4)
如果你转义/
符号,你可以使用普通的ID选择器 - jQuery requires that for special characters(尽管如此,/
在jQuery或CSS中没有空间含义,我知道)
$('#activities\\/_terp_count')