我现在已经使用了Jquery一段时间,但今天遇到了一个问题,我已经尝试了各种解决方法。
我正在使用名称搜索一些html元素。例如,我使用var form = $(formId);
从DOM获取一个表单,formId看起来像'#Guid-document-form',这样就可以了,我得到了表单对象。
然后我使用下面的代码片段
在表单对象中查询textarea的值var docCommentQuery = 'textarea[name="Files\\[' + arrayId + '\\]\\.Comment"]';
arrayId在int中,传递给执行查询的函数,因此必须按上述方式构建选择器。
然后我使用var docCommentVal = $(form).find(docCommentQuery).val();
尝试获取textarea的值,但返回的值始终是未定义的。我尝试了各种各样的事情,但没有快乐。
我已经阅读了jquery文档和WC3标准,并且都说要逃避元字符,这就是我上面所做的。
有没有人有任何想法?
由于
答案 0 :(得分:0)
作为一般规则,您要转义需要被视为文字字符的元字符,除非它们是双重内容中包含的属性选择器中值的一部分引号
由于第二组[]
和.
之后是name属性值的一部分,因此您无需转义它们:
textarea[name="Files[' + arrayId + '].Comment"]
但是,如果您想比较名为name [](而不仅仅是名称)的属性的值,则需要转义[]
对属性名称的一部分(但不是属性值的一部分):
textarea[name\\[\\]="Files[' + arrayId + '].Comment"]
答案 1 :(得分:0)
var files="Files[' + arrayId + ']";
var docCommentQuery = 'textarea[name="+files+.Comment"]';
你可以尝试一次上面的代码。希望它可以帮助