例如:
var a =" 1234&#34 ;;
var b =" line1 \\\\。5&#34 ;;
现在这行代码:
"#" + a + b;
发出此字符串
"#1234line1 \\ 5"
当我在选择器中输入它时:
$("#1234line1 \\ 5"。)
它显示正确的元素
但$("#" + a + b)
不
提前感谢任何建议
答案 0 :(得分:2)
我很惊讶它在控制台中工作,id
选择器无效。 CSS id
selectors cannot start with a digit。但是你可以逃脱它:
var a = "\\31 234"; // \\31 = 1, then you need the space to terminate the escape
var b = "line1\\.5"; // Removed a pair of \\ from this, I assume you
// don't have a backslash in the id
$("#" + a + b).html("Found it");
这适用于:Live Example
<div id="1234line1.5"></div>
<script>
(function() {
"use strict";
var a = "\\31 234";
var b = "line1\\.5";
$("#" + a + b).html("Found it");
})();
</script>
如果id
中确实有反斜杠,则反斜杠的转义为\5c
,您将其作为\\5c
字符串文字写入,因此:Live Example
<div id="1234line1\.5"></div>
<script>
(function() {
"use strict";
var a = "\\31 234";
var b = "line1\\5c \\.5";
$("#" + a + b).html("Found it");
})();
</script>
答案 1 :(得分:0)
首先:根据您使用的Doctype,ID可能不包含反斜杠或以数字开头。请先检查一下。
Javascript字符串中的反斜杠表示应转义下一个字符。因此,如果你想在你的名字中使用反斜杠,那么你必须使用反斜杠来逃避它。
如果您编写如下代码:
$('#abc\\\\d')
然后它引用ID为abc\\d
的元素(使用它可能是非法的),因为两个反斜杠都被转义。
答案 2 :(得分:-1)
问题不在于id以数字开头,Html 5支持这种ID
问题是你放了4个反斜杠而不是2个
所以不要搜索
#1234line1\.5
你搜索了
#1234line1\\.5
将其更改为
var b = "line1\\.5";
它会正常工作