jQuery:如何在id中访问带加号(+)的元素

Loc*_*tes 1 variables jquery

我有一个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是由第三方发送的 - 所以我无法控制删除'+'符号.

huy*_*itw 6

它不起作用,因为+符号是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)