为什么这个javascript正则表达式替换了这个jQuery代码呢?

时间:2016-12-08 20:07:53

标签: 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吗?我该如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

您正在更换文档正文,因此绑定将丢失。

$(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');
  });

});

答案 1 :(得分:0)

也许是一个更清晰的方法,基于你的澄清评论,你想要替换的唯一双括号是在类my-content的元素中:

$('.my-content').text().replace(/\} \}/g, '}}');