Sinatra - 如何在局部中添加javascript

时间:2012-01-30 01:27:33

标签: jquery sinatra

我正在使用Sinatra文档中提到的部分帮助程序模块。当我在partial中添加JavaScript时,它会被放置在我输入的HTML输出中。但是脚本块中有一个新的js/jsquery--1.7.js/eval/seq/[1](array)(我可以从firebug中看到这个),这相当于我放在partials文件中的内容,这也得到了评估,因此事件发生了再次被触发。

假设您在部分中添加了警报('helloworld') - 它会被触发两次。发生了什么以及如何避免这种情况?

1 个答案:

答案 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被执行多次。