jQuery代码即使在被注释掉后仍然被执行

时间:2012-05-19 09:37:15

标签: javascript jquery ruby-on-rails ruby-on-rails-3 comments

我里面有一个基本的.js文件

//$('#show').html('<%= escape_javascript(render(:partial => 'show')) %>');

当调用.js文件时,上面的代码会被执行,部分也会被渲染,即使它被注释掉了。删除代码时,部分永远不会被渲染。 DOM保持不变,但我可以看到服务器在命令行上呈现部分。是什么给了什么?

4 个答案:

答案 0 :(得分:4)

您正在评论JavaScript - 它在客户端执行。

部分呈现发生在服务器端,在客户端看到呈现的JavaScript之前。

换句话说,注释掉JavaScript对服务器 - 侧处理没有任何影响。如果您不希望显示服务器端字符串,请将其注释掉:

<%#= escape_javascript(etc) %>

让我们假设部分呈现如下:

<h1>Foo bar baz</h1>
<div>Plugh!</div>

为JavaScript转义此内容会将换行符转换为\n(并且可以转义单引号和双引号等),并在客户端留下这个:

$('#show').html('<h1>Foo bar baz</h1>\n<div>Plugh!</div>');

无论JS是否被注释掉,除非你注释掉escape_javascript Ruby代码的结果,否则部分将会呈现。

在客户端,如果JS被注释掉了,它不应该更新show的HTML - 你说的是吗?

答案 1 :(得分:0)

检查这是否是该行,或者您在其他地方进行此呼叫:

//$('#show').html('<%=escape_javascript(render(:partial => 'show'))%>');alert('This is the line');

答案 2 :(得分:0)

也许你的escape_javascript函数正在插入换行符?这将结束评论并在新行执行后导致任何内容。

答案 3 :(得分:0)

我遇到了类似的问题,想出了我想要的方法。也许这样的事情会帮助你!

不要将代码行注释掉,而是尝试构建一个逻辑运算符,为您提供&#34;开/关&#34;切换您要运行的功能。我这样设置,所以我可以关闭脚本,但保留它以供将来参考:

var toggle = 1; 

if(toggle == 2){
   functions that you want to run when turned on... 
}

由于您的变量不等于2,因此if语句不会显示其中存储的内容,而是有效地评论&#​​39;那个代码给你!要将其重新打开,您只需更改“切换”按钮即可。变量返回2(或者你想要的任何&#39; on&#39;值)。我只为自己找到了一点工作,希望有所帮助!