停止自动调用jquery函数

时间:2014-06-26 15:36:53

标签: javascript jquery ruby-on-rails

我确信这很简单,但我似乎无法找到答案。

我有一个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。

我该怎么做?

4 个答案:

答案 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 
}