我确信这很简单,但我似乎无法找到答案。
我有一个RoR应用程序,在我的application.js文件中,我想从一个函数中调用一个函数。
的application.js:
jQuery(function_1($) {
$("#select_box").change(function() { ....
....
function_2 ();
return false;
});
jQuery(function_2 () {
...
return false;
);
当选择框更改并且正常工作时,将触发功能1。问题是只要加载新页面就会执行功能2。我只希望从函数1中调用函数2。
我该怎么做?
答案 0 :(得分:1)
问题是当你把代码放在这样的块中时:
jQuery(function() {
$("#select_box").change(function() {
function_2();
return false;
});
});
代码自动执行。这相当于
$(function() {
});
或
$(document).ready(function() {
});
这应该可以让您了解为什么在页面加载时调用function_2
。要解决这个问题,只需定义如下函数:
jQuery(function() {
var function_2 = function() {
return false;
};
$("#select_box").change(function() {
function_2();
return false;
});
});
请参阅jQuery文档:http://learn.jquery.com/using-jquery-core/document-ready/
答案 1 :(得分:0)
$("#select_box").change(function() {
....
function_2 ();
return false;
});
function function_2 () {
...
return false;
}
答案 2 :(得分:0)
如果您正在使用资产管道,那么您根本不应该在application.js中使用javascript函数,它应该只是一个清单。因此,假设您已禁用资产管道,我认为您只需要更改定义function_2的方式。试试这个:
var function_2 = function () {
...
return false;
};
答案 3 :(得分:0)
你的问题是:
function 1 is triggered when a select box is changed and works correctly. The issue is that function 2 is executed as soon as a new page is loaded. I only want function 2 to be called from within function 1.
$(document).on("change","#select_box",function(e) {
// used on function to incorporate for turbolinks
// your code
// to trigger your function1 when select box is changed
function1 ();
e.preventDefault();
});
function function1(){
//your code
// to trigger your function2 inside function1
function2();
}
function function2(){
//your code
}