有些东西我没有在这里看到..我有一个带有元素id的字符串变量:
var sf_new_id = "#sf_widget_choice-32:14.86:1:1"
我从另一个元素中获取该字符串(' sf_selectedmethod'是另一个元素):
var anotherid = sf_selectedmethod.attr('id');
然后我删除了最后一个字符并向该ID添加了一些信息,即最后一个数字和'#':
var sf_new_id = anotherid.substr(0, anotherid.length-1); // Now without the last char.
sf_new_id = '#'+sf_new_id+'1';
它变成了上面描述的字符串。
我尝试使用jQuery访问该元素:
$(sf_new_id).addClass("...");
具有该ID的元素存在,但没有任何反应。我也尝试隐藏元素:
$(sf_new_id).hide();
但仍然没有任何反应。
我将整个元素放入console.debug,它显示一个空对象:
console.debug($(sf_new_id));
输出:控制台中的对象[]
我在这里缺少什么?
修改 我尝试了逃避 - 它似乎工作,但现在的问题是,当信息在变量中时,我怎么能逃避冒号呢?
答案 0 :(得分:9)
从技术上讲,您可以在id / name属性中使用冒号和句点,但我建议避免使用它们。
在像jQuery这样的几个JavaScript库中,句点和冒号都有特殊含义,如果你不小心使用它们,你会遇到问题。句点是类选择器,冒号是伪选择器(例如,当鼠标悬停在元素上时,“:悬停”)。
尽量避免“。”和您的ID属性中的“:”或者如果不可能。请尝试在javascript中转义它们,如下所示:
var sf_new_id = "#sf_widget_choice-32\\:14\\.86\\:1\\:1";
答案 1 :(得分:7)
您必须转义字符串中的特殊字符,才能形成有效的选择器。
var sf_new_id = "#sf_widget_choice-32:14.86:1:1";
sf_new_id = sf_new_id.replace(/:/g, "\\:")
.replace(/\./g, "\\.")
$(sf_new_id).hide();
答案 2 :(得分:5)
您需要在选择器中转义printf("%.2lf",(double)a/b);
和:
。试试这个:
.
答案 3 :(得分:3)
ID应匹配:
[A-Za-z][-A-Za-z0-9_:.]*
但是应该避免:和。东阳:
例如,ID可以标记为" a.b:c"在样式表中引用为#ab:c,但作为元素的id,它可能意味着id" a",class" b",伪选择器&# 34; C&#34 ;.最好避免混淆,远离使用。和:一起。