javascript - 在使用 .replace() 之后,字符串无法选择元素(使用 jquery)

标签 javascript jquery html

两个变量看起来一样,除了其中一个使用 replace() 并使其不起作用。

<div id="h|1.1|Name!7">1.NOT CHANGED</div>
<div id="h|1.1|Title!7">2.NOT CHANGED</div>

var id = 'h|1.1|Name!7';

id = id.replace(/\./g,'\\\\.');
id = id.replace(/\|/g,'\\\\|');
id = id.replace(/\!/g,'\\\\!');

console.log(id); // all good

$("#" + id).text('1.CHANGED'); // not working

// when not using replace(), it works
var otherId = 'h\\|1\\.1\\|Title\\!7';
$("#" + otherId).text('2.CHANGED');

http://jsfiddle.net/L83ba7zg/1/

怎么会?

最佳答案

代码中的每个 \\\\ 都应该只是 \\。控制台输出可能看起来不错,但这是错误的:控制台每两个反斜杠只显示一个反斜杠。如果您登录 otherId,您会得到不同的结果。

Working JSFiddle

var id = 'h|1.1|Name!7',
  otherId = 'h\\|1\\.1\\|Title\\!7';

// More concise version of replacements:
id = id.replace(/(\.|\||\!)/g,'\\$1');

// Now in the same format:
console.log(id);      // "h\|1\.1\|Name\!7"
console.log(otherId); // "h\|1\.1\|Title\!7"

关于javascript - 在使用 .replace() 之后,字符串无法选择元素(使用 jquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32108568/

相关文章:

javascript - Vimeo API - 加载视频

javascript - 使用 JavaScript 构建猜数游戏程序

jquery - 无法使用javascript替换旧图像的图像

jquery - 找到修改了 html 元素的 jquery 函数

javascript - 如何使用 `JSON.parse` 的 reviver 函数将数据添加到数组中的每个对象?

javascript - 浏览器滚动事件是否可以由 DOM 操作触发(除了用户操作或显式调用例如 $.ScrollTop)?

jquery - 如何定位复选框和文本

jquery - 从 jQuery 提交的表单中排除 div?

javascript - NodeJs tls.createServer 等同于 Apache SSLCertificateChainFile?

javascript - react .js : Parent state values not passing into child properties + Fetch API data cannot be accessed