我正在使用Sinatra文档中提到的部分帮助程序模块。当我在partial中添加JavaScript时,它会被放置在我输入的HTML输出中。但是脚本块中有一个新的js/jsquery--1.7.js/eval/seq/[1](array)
(我可以从firebug中看到这个),这相当于我放在partials文件中的内容,这也得到了评估,因此事件发生了再次被触发。
假设您在部分中添加了警报('helloworld') - 它会被触发两次。发生了什么以及如何避免这种情况?
答案 0 :(得分:2)
这个答案可能会明显更好,但你必须发布一些关于你如何使用部分的示例代码(按照@summea 4天前的要求)。
你的问题听起来就像你看到你在局部渲染两次的部分渲染的JavaScript代码,一次放在你放置它的html中,一次放在Firebug中(“js / jsquery-1.7.js / eval / seq / 1" )。
确保您只将该特定部分渲染一次到页面,否则您的JavaScript将多次触发(因为它不止一次出现在页面上)。
换句话说:
<%= render "myPartialWithJavaScript" %>
<h1>My Page</h1>
<p>Welcome to my page!</p>
很好,并且:
<%= render "myPartialWithJavaScript" %>
<h1>My Page</h1>
<p>Welcome to my page!</p>
<%= render "myPartialWithJavaScript" %>
会导致您的JavaScript被执行多次。