为什么获胜'我的jQuery选择器适用于带有冒号和句点的ID
Why won't my jQuery selector work for IDs with colons and periods in them?
我有一个脚本,该脚本应该将包含组成员名称的div动态放置在一个容器div中。这些div由"groupMemberEntryDiv"和组成员的电子邮件地址(在我的系统中是唯一的)串联标识。
问题是在jQuery选择器中使用ID不起作用。我相信我已经涵盖了所有可能导致这个问题的问题:
- 电子邮件地址中存在"@"(元素ID不能包含此字符)。我已经修复了这个问题,将它们替换为":",这是允许的字符。此外,由于":"未出现在有效的电子邮件地址中,当我需要再次使用电子邮件地址时,我可以使用indexOf来分析字符串并将其替换为"@"
- ":"answers"."的存在在(现在修改的)电子邮件地址中(jQuery可能会将它们分别视为伪类和类)。按照那一页的说明,我试着逃离这些字符。事实上,我从这个链接中提取了.replace()函数
不幸的是,选择器仍然无法工作。我创建了一个简单的jFiddle来说明这个问题。
有人能解释一下发生了什么事吗?
这是因为您正在转义特殊字符(这对选择器来说是正确的),但不需要转义ID。考虑:
$("#protectedGroupDiv100").append("<div id='groupMemberEntryDiv" + emailString + "' class='groupMemberEntryDivs'>hey</div>");
生成:
<div id="groupMemberEntryDivblahblah':gmail'.com" class="groupMemberEntryDivs"></div>
查看如何创建id为:#groupMemberEntryDivblahblah':gmail'.com
的元素但后来您使用了#groupMemberEntryDivblahblah':gmail'.com
的选择器,它看起来是一样的,但jQuery查找的实际上是#groupMemberEntryDivblahblah:gmail.com
。由于元素的ID中有反斜杠,jQuery找不到与选择器匹配的项。
要修复此问题,请在退出之前设置ID:
$.each(emailArray, function(index, emailString){
emailString = emailString.replace("@", ":"); //Element attributes cannot contain "@"
$("#protectedGroupDiv100").append("<div id='groupMemberEntryDiv" + emailString + "' class='groupMemberEntryDivs'>hey</div>");
emailString = emailString.replace(/(:|'.)/g,'''$1'); //Escape ':' and '.'
alert($("#groupMemberEntryDiv" + emailString).length);
});
这是一个经过修改的jsFiddle。
虽然这是有效的,但我不建议在标记中包含用户电子邮件。正如其他人暗示的那样,这可能会导致安全问题。
相关文章:
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- JavaScript从字符串中删除尾随空格和句点
- 下划线用句点扩展.旋转引号被删除,如何用引号获得它
- javascript或css:如何隐藏后面跟着句点前缀的任何数字"1.文本”"2.文本“"
- 如何提取与前面带句点(.)的同一字符串匹配的字符串?(仅使用正则表达式)
- 如何在 javascript 中使用正则表达式提取句点 (.) 之后的字符串
- 什么'这个代码只允许数字和句点,这是错误的
- 基于jquery中id(其值中有句点)属性的访问值..
- Regex表示用句点分隔的3个3位数的值
- 如何用逗号和句点分隔JavaScript字符串
- javascript是否有一个选项可以使句点与任何字符匹配,包括换行符
- 在节点快速路由中使用句点时获取 403
- SQL查询-替换字段名称中的句点
- 在访问对象属性时,括号表示法比句点表示法慢
- 电子邮件正则表达式不会验证句点后的部分
- 如何删除句点和前一个单词之间的空格
- 咕噜声:带有句点的位置 URL 应用
- jQuery:如何识别ID中包含句点的元素
- 为什么获胜'我的jQuery选择器适用于带有冒号和句点的ID