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

为什么这个JavaScript正则表达式替换了这个jQuery代码?,javascript,jquery,html,Javascript,Jquery,Html,我需要在加载页面时运行此JavaScript: document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}'); 我还需要在加载页面时运行这个jQuery(处理我的边栏): 这适用于侧边栏(位于前面): $(文档).ready(函数(){ $(“[data toggle=offcanvas]”)。单击(函数(){ $('.row offcanvas').toggleClass('active'); }); })

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

document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}');
我还需要在加载页面时运行这个jQuery(处理我的边栏):

这适用于侧边栏(位于
前面):

$(文档).ready(函数(){
$(“[data toggle=offcanvas]”)。单击(函数(){
$('.row offcanvas').toggleClass('active');
});
});
但如果我像这样添加正则表达式行:

<script>$(document).ready(function() {
  $('[data-toggle=offcanvas]').click(function() {
    $('.row-offcanvas').toggleClass('active');
  });
  document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}');
});</script>
$(文档).ready(函数(){
$(“[data toggle=offcanvas]”)。单击(函数(){
$('.row offcanvas').toggleClass('active');
});
document.body.innerHTML=document.body.innerHTML.replace(/\}\}/g,'}}');
});

正则表达式工作,但边栏位停止工作。这是因为我混合了JavaScript和jQuery吗?如何修复此问题?

您正在替换文档正文,因此绑定丢失

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

});

您正在替换文档正文,因此绑定丢失

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

});

也许是一个更干净的方法,它基于您的澄清注释,即您只想替换class
my content
元素中的双括号:

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

也许是一个更干净的方法,它基于您的澄清注释,即您只想替换class
my content
元素中的双括号:

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

这感觉像是一场灾难。你为什么要运行那个正则表达式?这看起来像是一些转义的JSON或类似的东西,可以用另一种方式更好地处理……不,这是因为您正在用新内容替换页面内容。新内容没有事件处理程序。这不是一种很好的方法,无论你想做什么。“这是因为我混合了Javascript和jQuery吗?”jQuery是Javascript。
document.body.innerHTML=…
替换了正文中的所有内容,删除了事件处理程序和几乎所有内容else@Garry,听起来站点生成器希望使用双大括号指定的模板标记。你可以在站点生成器上关闭它。这感觉像是一个。你为什么要运行那个正则表达式?这看起来像是一些转义的JSON或类似的东西,可以用另一种方式更好地处理……不,这是因为您正在用新内容替换页面内容。新内容没有事件处理程序。这不是一种很好的方法,无论你想做什么。“这是因为我混合了Javascript和jQuery吗?”jQuery是Javascript。
document.body.innerHTML=…
替换了正文中的所有内容,删除了事件处理程序和几乎所有内容else@Garry,听起来站点生成器希望使用双大括号指定的模板标记。您可以在站点生成器上关闭该选项。非常感谢。非常好,非常感谢。工作完美。