根据ID动态创建元素(Jquery)

Getting dynamically created element by ID (Jquery)

本文关键字:Jquery 元素 创建 ID 动态 根据      更新时间:2023-09-26

我正在使用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 id类型

HTML5规范在这方面没有那么严格,但是在许多浏览器或jQuery等框架上使用波浪可能会遇到问题。例如,在jQuery中,选择器中的波浪表示完全不同的东西。

您需要转义波浪:

$("#impactPlusMinus''~"+questionAnswerNameId)

由于您在Id中使用保留关键字,您可以将其作为属性值访问,或者如果您直接访问它,则使用''转义特殊字符。

$('[id="impactPlusMinus~' + questionAnswerNameId+ '"]' 

 $("#impactPlusMinus''~" + questionAnswerNameId);
从文档

使用任何的元字符(如! " # $ %和 ;'()*+,./:;& lt; => ?@[]^ '{|}~)作为名称的文字部分,必须用两个反斜杠转义:'。

为了避免与jQuery确定标识符的方式发生冲突,特别是在命名不太严格的HTML5的情况下,您可以像这样创建元素引用:

$(document.getElementById('impactPlusMinus~' + questionAnswerNameId));

这确保只使用浏览器来查找元素,然后应用jQuery构造函数。