Div id包含字符“。”没有被jquery选中

时间:2013-06-06 05:12:44

标签: jquery

我有以下ID的div:

<div id="text.header" class="countDiv"></div>
<div id="text.content" class="countDiv"></div> etc

我有两个数组。在第一个我有,array1 = [1,2],在另一个我存储所有div的ID使用以下代码段

$(".countDiv").each(function(i){
    array2[i] = $(this).attr("id");
}

然后我使用.html()使用以下内容将i的值写入div的id:

for(var myCount = 0; myCount < array1.length; myCount++){
    $("#" + array2[i]).html(array1[i]);
}

问题在于,对于所有情况都很好,但是当我在ID之间使用.时,代码不起作用。控制台上没有显示错误。

例如:当我使用时,它运作良好,但是当我使用时,页面是空白的。代码不起作用。

我在这里做错了吗?任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

如果您查看结果选择器字符串的外观,您将看到此行导致的问题:

$("#"+array2[i])

我们说id是text.header。查看生成的选择器字符串变为什么:

$('#text.header')

此选择器将匹配ID为text且类header的元素。那不是你想要的。 jQuery解决方案是逃避点,但更好的方法是使用本机DOM方法并将其包装在jQuery对象中:

$(document.getElementById(array2[i]))

我没有在重复的问题中看到这种方法,所以我不妨在这里发布。

答案 1 :(得分:1)

您提到myCount但没有使用它。 此外,jquery在.中使用id时会产生问题,因此请在此处使用javascript selecting id

var array2=new Array();
var array1 = [1,2];
$(".countDiv").each(function(){
   array2.push($(this).attr("id"));
});

for(i=0; i<array1.length; i++){
    document.getElementById(array2[i]).innerHTML=(array1[i]);
}

小提琴 http://jsfiddle.net/gEScc/1/

答案 2 :(得分:0)

.表示jQuery(和CSS)中的类选择器。考虑将其转义为\.

$("#" + array2[i].replace(".", "\\."))...

答案 3 :(得分:-1)

。没错。

''是CSS中的类路径分隔符,因此显然不能在类名中使用。

这就是设计(CSS)。