由于原因我不能在这里讨论太多细节我有一个看起来像这样的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
所以我的问题是如何解决这个问题?
答案 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('\%');