问题提出
对于一个输入框, 如果其id中含有冒号(:),选择器使用需要有特殊写法,
例如 id为下
<input type="text" value="ddd" id="a:b">
使用$(selector)直接使用#id值, 找不到DOM
console.log("#a:b")
console.log($("#a:b").length) // output 0
经过探索可以使用以下两个方法选择到DOM:
$("#a\\:b");
$("[id^='a:b']");
其中第一种, 需要在冒号(:)前添加一个反斜杠(\), 某些同学要问了,命名是两个反斜杠, 忽悠我?
请看下节介绍。
JS转义
js中的字符串语法需要占用一些元字符, 对于这些元字符如果需要想要在字符串中出现就需要使用转移:
转义表: FROM http://www.w3school.com.cn/js/js_special_characters.asp
代码 | 输出 |
---|---|
\' | 单引号 |
\" | 双引号 |
\& | 和号 |
\\ | 反斜杠 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\b | 退格符 |
\f | 换页符 |
事实上,从上表中看以看出,不仅仅是元字符需要显示才转义(" -> \"), 还有使用转移后可以将特定字符转义为另外含义的情况, 例如 n -> \n 变为换行符。
从学习上可以按照如下逻辑整体理解js转义:
1、 js字符串使用 单引号 或者 双引号 作为字符串的”括号”, 表示一个整体字符串, 引号内部为字符串内容,
2、 那么问题来了, 字符串内容中要想包括 引号, 怎么办