搜索包含'/'+ jquery的'id'

时间:2010-11-22 07:13:12

标签: jquery

我有DOM元素,其id可能包含'/'。 我想使用以下格式,因为我需要所有具有id的元素    对于Ex:

jQuery('[id=activities/_terp_count]') //returns null 

请注意,

jQuery('#activities/_terp_count') //returns null

3 个答案:

答案 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')