javascript - 为什么这个 JavaScript 正则表达式替换会破坏这个 jQuery 代码?

标签 javascript jquery html

我需要在页面加载时运行此 JavaScript:

document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}');

我还需要这个 jQuery 在页面加载时运行(处理我的侧边栏):

$('[data-toggle=offcanvas]').click(function() {
    $('.row-offcanvas').toggleClass('active');
});

这适用于侧边栏(放置在 </body> 之前):

<script>$(document).ready(function() {
  $('[data-toggle=offcanvas]').click(function() {
    $('.row-offcanvas').toggleClass('active');
  });
});</script>

但是如果我添加这样的正则表达式行:

<script>$(document).ready(function() {
  $('[data-toggle=offcanvas]').click(function() {
    $('.row-offcanvas').toggleClass('active');
  });
  document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}');
});</script>

正则表达式有效,但侧边栏位停止工作。这是因为我混合了 JavaScript 和 jQuery 吗?我该如何解决这个问题?

最佳答案

您正在替换文档正文,因此您的绑定(bind)会丢失。

$(document).ready(function() {
  // change body
  document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}');
  // then bind to new body
  $('[data-toggle=offcanvas]').click(function() {
    $('.row-offcanvas').toggleClass('active');
  });

});

关于javascript - 为什么这个 JavaScript 正则表达式替换会破坏这个 jQuery 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41047958/

相关文章:

javascript - 使 DIV 覆盖 100% 的视口(viewport)而不是 100% 的主体

javascript - react 切换 Hook 状态

javascript - jQuery 在 AJAX 请求中使用回调中断循环

javascript - jQuery click() 仍然激活 anchor ,即使 click 函数返回 false

php - 使用仅工作一次的 jquery 加载函数重新加载 div 以及如何传递变量

javascript - jQuery Drag with CSS Transform with jQuery UI

javascript - jQuery 选择列表 : shows only one

javascript - Angular2 : Directive loads, 但什么也不做

javascript - 在javascript中跳转代码

html - 为什么是:not not working?