我有一个jQuery循环,它将多行附加到表中.行数可以在运行时更改,因此行ID是动态生成的.
$("#tableBody")
.append($("<tr>")
.attr('id','row-icon' + currentID)...
Run Code Online (Sandbox Code Playgroud)
稍后,我需要访问这些添加的行.但是,当值中currentID有一个"+"符号时 - 当我尝试访问row元素时,出现"undefined"错误.
例如,下面的行在currentID"1" 时起作用- 但在ID为"vm + 1"时失败.
var testID = $("#row-icon" + currentID).attr("id");
Run Code Online (Sandbox Code Playgroud)
我错过了"逃避"额外"+"符号的简单解决方案吗?
这里的工作示例.
编辑:我应该注意,id是由第三方发送的 - 所以我无法控制删除'+'符号.
它不起作用,因为+符号是jQuery选择器中所谓的元字符,如文档中所述.你应该使用2个反斜杠来逃避它:
要使用任何元字符(例如!"#$%&'()*+,./:; <=>?@ [\] ^`{|}〜)作为名称的文字部分,它必须使用两个反斜杠进行转义:\\.例如,id ="foo.bar"的元素可以使用选择器$("#foo \\.bar").W3C CSS规范包含完整的集合关于有效CSS选择器的规则.还有一点很有用的是Mathias Bynens关于标识符的CSS字符转义序列的博客条目.
所以,在你的情况下,你会这样做(见jsFiddle):
var test = $("#expand-icon" + currentID.replace(/\+/g, '\\+')).attr("src");
var testID = $("#row-icon" + currentID.replace(/\+/g, '\\+')).attr("id");
Run Code Online (Sandbox Code Playgroud)