2016-02-19 57 views
0

我已经使用Jquery一段时间了,但现在遇到了一个问题,我尝试了各种解决方法。按名称的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标准,并且都说要转义元字符,这是我在上面做的。

有没有人有任何想法?

感谢

+2

是的,从'docCommentQuery'取斜线 - 它们*不应该被转义 - 它们是选择器的一部分。 – Jamiec

+1

''textarea [name =“Files ['+ arrayId +'] .Comment”]''或''textarea [name = Files \\ ['+ arrayId +'\\] \\。Comment]''但不是''textarea [name =“Files \\ ['+ arrayId +'\\] \\。Comment”]' –

+0

你可以添加标记吗? – Mayank

回答

0

作为一般规则,你逃避,你需要被当作文字字符,除非他们在包含双引号内的属性选择值的一部分元字符。

由于第二套[]和后.是name属性值的一部分,你不需要逃避他们:

textarea[name="Files[' + arrayId + '].Comment"] 

但是,如果你想比较值

textarea[name\\[\\]="Files[' + arrayId + '].Comment"] 
+0

干草感谢帮助分配的解释。 – Csharper

0
var files="Files[' + arrayId + ']"; 
var docCommentQuery = 'textarea[name="+files+.Comment"]'; 
:属性名为name [](而不仅仅是名),你需要躲避 []一对的属性名称的一部分(但不属于属性值的一部分的那些)的0

你可以试试上面的代码一次吗?希望它可以帮助