Jquery点击

时间:2016-11-24 12:05:45

标签: javascript jquery

我正在尝试点击执行功能,下面是HTML上的点击按钮,

Insights.init()将在页面加载时执行将从服务器给我一些数据,现在点击按钮,我需要将变量传递给month函数来过滤数据,并点击我想执行Insights()

中的所有函数

    var Insights = function() {
      var initCheckColor = function(vari) {
        console.log(vari);
      }
      var testFunction = function(vari) {
        console.log('test');
      }

      return {
        init: function() {
          initCheckColor();
          testFunction();
        }
      };

    }();

    jQuery(document).ready(function() {
      Insights.init();
    });

    function month(vari) {
      console.log("hoo");
      return {
        init: function() {
          initCheckColor(vari);
          testFunction();
        }
      };

    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" onClick="month('test')"> Month </a>

现在的问题是,当我点击链接时,我可以在控制台上看到“hoo”,但是我也希望通过执行 initCheckColor(vari)功能来打印它,意味着我想要输出两个时间,但我无法输出,

我怎样才能获得两次输出?

1 个答案:

答案 0 :(得分:2)

问题:是否使用此代码

function month(vari) {
      console.log("hoo");

      //this block of code
      return {                 
        init: function() {
          initCheckColor(vari);
          testFunction();
        }
      };
      // upto here

    }

当您调用month函数时,您将返回一个具有名为init 的属性的对象注意:您只是返回一个对象而不执行该属性中的函数。另外一个问题是这个属性是一个执行另外两个函数的函数,但是这些函数在当前作用域中不可用。因为它们等于Insights对象的私有方法。

解决方案:将使用数据重新初始化对象,就像您在页面加载时一样。

我修改了您的代码并在代码中添加了注释,以便进行更改。

&#13;
&#13;
var Insights = function() {
  var initCheckColor = function(vari) {
    console.log(vari);
  }
  var testFunction = function(vari) {
    console.log('test');
  }

  return {
    init: function(vari) {  // have a input parameter during initialization.
      initCheckColor(vari);
      testFunction();
    }
  };

}();

jQuery(document).ready(function() {
  Insights.init('something'); // I pass in the string "something" now this will be printed by the initCheckColor function.
});

function month(vari) {
  console.log("hoo");
  Insights.init(vari); // initialize the Insights object by passing in some value.

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" onClick="month('test')"> Month </a>
&#13;
&#13;
&#13;