[英]Getting dynamically created element by ID (Jquery)
我正在使用JQuery,并且正在通过before()动态创建元素,但是无法通过ID访问这些元素。 这是一堆代码,如果可能的话,我宁愿不发布它,但是我正在检查用作选择器的文本,然后检查其长度; 长度表示为0,但是我正在使用chrome中的“检查元素”工具进行交叉引用,并且ID当然是应该的。 这是新创建的元素的已知问题吗? 当我通过访问给定类的同级来访问元素时,它工作得很好,但是现在同一个类有多个同级,而最有效的处理方法是使用ID。
这是我说要检查文本时的意思:
alert("id=\"impactPlusMinus~"+questionAnswerNameId+"\"\n"+
$("#impactPlusMinus~"+questionAnswerNameId).length);
波浪号~
不是HTML4中id属性的有效字符。 尝试使用其他字符。
ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符(“-”),下划线(“ _”) ,冒号(“:”)和句点(“。”)。
资料来源:HTML4规范。 http://www.w3.org/TR/html4/types.html#type-id
HTML5规范对此并不严格,但是在许多浏览器或jQuery之类的框架上使用波浪号可能会遇到问题。 例如,在jQuery中,选择器中的波浪号完全意味着其他含义。
您需要逃脱波浪号:
$("#impactPlusMinus\\~"+questionAnswerNameId)
由于您在Id中使用保留关键字,因此您可以将其作为属性值来访问,如果直接访问它,则可以使用\\\\
转义特殊字符。
$('[id="impactPlusMinus~' + questionAnswerNameId+ '"]'
要么
$("#impactPlusMinus\\~" + questionAnswerNameId);
来自docs
要将任何元字符(例如!“#$%&'()* +,。/ :; <=>?@ [] ^`{|}〜)用作名称的文字部分,必须以两个反斜杠转义:\\。
为了避免与jQuery确定标识符外观的方式发生冲突,尤其是在HTML5对命名不太严格的情况下,可以这样创建元素引用:
$(document.getElementById('impactPlusMinus~' + questionAnswerNameId));
这样可以确保仅使用浏览器查找元素,然后再应用jQuery构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.