Javascript语法错误,无法识别的表达式:在id中使用%时

Javascript语法错误,无法识别的表达式:在id中使用%时,javascript,Javascript,出于某些原因,我无法在这里详细介绍我的id,可能如下所示: 1%20 我这样做的原因是因为我匹配了一个包含大量数据的表格 1表示表第20行是它所在的列表(来自数据库) 现在我有了以下javascript代码: function getSplitId(id) { return id.split('%'); } 当我执行以下操作时,它可以正常工作: selected_row_id = getSplitId($(this).get(0).id)[0]; 现在,我想获取我单击的行的HTML

出于某些原因,我无法在这里详细介绍我的id,可能如下所示:

1%20

我这样做的原因是因为我匹配了一个包含大量数据的表格

1表示表第20行是它所在的列表(来自数据库)

现在我有了以下javascript代码:

function getSplitId(id) {
    return id.split('%');
}
当我执行以下操作时,它可以正常工作:

selected_row_id = getSplitId($(this).get(0).id)[0];
现在,我想获取我单击的行的HTML id,为此,我有以下代码:

rowHtmlId = $(this).id;
但是,当我需要开始使用rowHtmlId时,它也可以正常工作,例如:

newElement = $('#' + rowHtmlId).prev();
我得到以下错误:

Syntax error, unrecognized expression: #44%24

所以我的问题是如何绕过这个问题?

只需添加一个反斜杠以避开百分号:

id.split('\%');
在getSplitId()中,更改为:

return id.split('%');

如果你看一下,你会发现

若要将任何元字符(如
!“\$%&'()*+,./:;?@[\]^
{124}~`)用作名称的文字部分,必须使用两个反斜杠对其进行转义:
\

%
是一个元字符,因此必须首先对其进行转义:

newElement = $('#' + rowHtmlId.replace('%', '\\%')).prev();
或者您只需使用
getElementById

$(document.getElementById(rowHtmlId)).prev();
或者更好(取决于上下文),只需保留对row元素本身的引用:

var row = $(this);
// ... later
newElement = row.prev();

如果您已经有了对它的引用,则无需再次查询它。

使用
this.id
而不是
$(this.id
(jQuery对象vs DOM元素)我几乎可以肯定您可以使用更好/有效的id命名约定。
rowHtmlId=$(this).id;
不应该起作用。尽管我很高兴收到回复,但我不认为这对我有什么帮助?我不想拆分id,只是选择它并在以后使用它?请编辑你文章的标题:)我在标题中回答了问题:)听起来你有很多问题。祝你好运:)这甚至不能解决标题中提到的问题,因为
'%'
split
不会生成这样的错误:。仅供参考,在JavaScript中,字符串
'\%'
'%'
是100%相同的。比较
console.log('\%')
console.log('%')
var row = $(this);
// ... later
newElement = row.prev();