Javascript语法错误,无法识别的表达式:在id中使用%时
出于某些原因,我无法在这里详细介绍我的id,可能如下所示: 1%20 我这样做的原因是因为我匹配了一个包含大量数据的表格 1表示表第20行是它所在的列表(来自数据库) 现在我有了以下javascript代码: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
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();