我有以下代码:
$.each(css, function(i, v) {
css[i] = this.replace('{bind}', bindName, css[i]);
});
我想用bindName的值替换所有{bind}。 为了尝试这个,我给了bindName值'Test'。
'css'是一个带数据的简单对象。
var css = {
tabs : 'tab-{bind}',
outerWrapper : 'outerWrapper-{bind}',
innerWrapper : 'innerWrapper-{bind}-{id}-{tab}',
subMenue : 'subMenue-{bind}-{id}',
subMenueItem : 'subMenue-Item'
};
在Firefox中,我在第68行收到错误“无效正则表达式标志k”。 第68行:
$.each(css, function(i, v) {
css[i] = this.replace('{bind}', bindName, css[i]); // LINE 68
});
如果有必要,这是我的替换功能:
this.replace = function (s, r, su) {
return su.split(s).join(r);
}
Google-Chrome中没有错误,但在Firefox(最新版本)中 - 您能找到错误吗?
答案 0 :(得分:3)
改变这个:
css[i] = this.replace('{bind}', bindName, css[i]);
其中任何一个:
css[i] = this.replace('{bind}', bindName);
css[i] = v.replace('{bind}', bindName);
css[i] = css[i].replace('{bind}', bindName);
错误消息的原因是在Firefox中,String.replace
采用表示正则表达式标志的可选第三个参数(例如'i'
或'g'
);你在css[i]
传递了该参数,并且Firefox将其解释为包含无效标志。 Chrome 不给出错误消息的原因是它不支持该非标准功能,因此它完全忽略了该参数。
答案 1 :(得分:-1)
我不确定,但也许你的问题是“{”字符在正则表达式语言中是特殊的。 试着逃避它:
css[i] = this.replace('\{bind\}', bindName, css[i]);