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

时间:2014-02-15 19:26:32

标签: javascript

由于原因我不能在这里讨论太多细节我有一个看起来像这样的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

所以我的问题是如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您查看jQuery documentation,就会看到

  

要使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^ {|}〜`)作为名称的文字部分,必须使用两个反斜杠进行转义:\\

%是一个元字符,所以你必须先逃避它:

newElement = $('#' + rowHtmlId.replace('%', '\\%')).prev();

或者您只是使用getElementById

$(document.getElementById(rowHtmlId)).prev();

甚至更好(取决于上下文),只需保留对行元素本身的引用:

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

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

答案 1 :(得分:-2)

只需添加反斜杠即可转义百分号:

id.split('\%');
getSplitId()中的

改为:

return id.split('%');

return id.split('\%');