<h3 id="tourName_ROCK.ROCK"></h3>
<h3 id="tourName_MOBT.MOBT"></h3>
和 JSON
dataTourBase :{
"list":[{
"code" : "ROCK.ROCK",
"name" : "Laugher Bins"
},
{
"code" : "MOBT.MOBT",
"name" : "Laugher Bins"
}]
在我的Jquery代码中,我想附加匹配的代码及其名称。但问题是我的DOM无法找到id,因为“。” (DOT)oprator
我这样做:
jQuery.each(dataTourBase.list, function(i, excursion) {
$("#" + "tourName_" + excursion.code).html(excursion.name);
}
请建议,我如何在DOM中找到我的id。 提前致谢
答案 0 :(得分:4)
CSS选择器。你在做什么:
$('#tourName_ROCK.ROCK');
Javascript正在解释为&#34; ID为tourName_ROCK
的元素和CSS选择器ROCK
,例如
<div id="tourname_ROCK" class="ROCK">
会匹配。
换句话说,请勿在{{1}}或.
名称中使用id
。
答案 1 :(得分:3)
你有两种选择,第一种是最好的 - 以我自己的拙见 - 从.
的元素中删除id
个字符;将其替换为允许的字符,例如-
或_
。
否则,你必须使用String.prototype.replace()`来转义字符串中的.
个字符:
jQuery.each(dataTourBase.list, function(i, excursion) {
$("#" + "tourName_" + excursion.code.replace(/\./g,'\\.').html(excursion.name);
}
附加代码:
replace(/\./g, '\\.')
匹配所有文字.
字符,首先使用反斜杠转义它(因为句点是正则表达式中的特殊字符),并用两个反斜杠后跟一个句点替换该句点;第一个反斜杠转义第二个反斜杠,&amp; ndash在jQuery选择器&amp; ndash中使用时将其转义为句点,因此它被视为“文字”句点,而不是将以下字符串标识为类名。
但是,老实说,避免问题比编码周围更容易。
参考文献:
答案 2 :(得分:2)
我不是说你应该这样做,因为我会从id名称中获取句号,但这将与游览代码中的'。'一起使用:
$('[id="tourName_' + excursion.code + '"]');