繁体   English   中英

jQuery在单击时执行两个功能

[英]Jquery execute two functions on click

我试图在单击时执行功能,下面是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)函数来打印它,这意味着我想输出两次,但是我无法输出它,

如何获得两次输出?

问题:带有此代码

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

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

    }

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM