我正在使用Ruby on Rails 3.0.10和jQuery 1.6。我打算在我的应用程序的application.js
文件中编写一些JavaScript函数,以便我可以接近Unobtrusive JavaScript。但是,我有一些问题(那些引用application.js
文件):
答案 0 :(得分:3)
如果我在读你的问题的权利,你想知道你应该怎么写你的JS到的application.js文件,以使其适合的视觉非侵入式JavaScript 的。
这是一个例子。假设您有一个视图,页面上有一个链接,可以让您在Javascript对话框中输入答案:
# app/views/questions/ask.html.erb
<h1>Question</h1>
<a href="#" class="question">Click here to see the question!</a>
请注意,该链接设置为无处可去。如果用户没有安装Javascript,那么这将无效。现在,在您的application.js
文件中,您通过类挂接到<a>
标记(我假设您使用的是jQuery):
// public/javascripts/application.js
$('.question').click(function() {
var name = prompt('What is your name?');
alert('Hello ' + name + '!');
});
就是这样!这是“不引人注目的”,因为您在HTML中看不到一堆Javascript代码。现在,如果您想成为一名优秀的Javascript公民,您可以命名自定义代码并使其在整个应用程序中可重用。假设您有很多可以提问的页面。您可能想要重构问题的部分,然后简单地返回答案:
// public/javascripts/application.js
var CustomCode = {
askQuestion:function(text) {
return prompt(text);
}
};
$('.question').click(function() {
name = CustomCode.askQuestion('What is your name?');
alert('Hello ' + name + '!');
});
这是一个非常简单的重构,因为它并没有真正提高效率,但是假设你想在将它返回给用户之前对答案做些什么。现在,您只需编写一次该代码(在askQuestion()
方法中),每个人都可以获益。
您可以在此处查看代码并在其中播放:http://jsbin.com/arites
答案 1 :(得分:0)
“我应该如何陈述JS功能?”
编写JS函数而不包含在<script>
标记中。
我应该添加什么样的“功能?” 这个文件很适合用于多次使用的代码,所以你不要重复,但任何代码都可以放在这里来清理你的视图。
“我应该如何组织职能?” 以您想要的任何方式组织JS功能 - 您可以对部分进行评论以保持井井有条:
/*
Home Page Functions
*/
“这些功能如何与jQuery一起使用?” Jquery函数的工作方式与在页眉中编写它们时通常的工作方式相同。 例如:
$(function(){
alert('got to application.js!');
})
请注意,在rails 3.1中,事情会有所不同......观看railscast以加快速度:upgrading to 3.1