在多个函数

时间:2016-06-22 14:54:35

标签: javascript jquery variables global-variables

我正在使用两种导航方式创建一个简单的手风琴菜单。

  1. 点击步骤标题
  2. 点击"下一个/上一个"步骤内的按钮。
  3. JSFiddle

    我的js代码如下所示:

    
    
    $(document).ready(function(){
    
    // Click on TITLE
    $(".step-title").click(function(){
      
      var this_title = $(this).parents(".step").children(".step-title");
      var this_content = $(this).parents(".step").children(".step-content");
      var that_title = $(".step-title");
      var that_content = $(".step-content");
        
      if (this_title.hasClass("active"))
      {
        this_title.removeClass("active");
        this_content.slideUp(200);
    
      } else {
        that_title.removeClass("active");
        this_title.addClass("active");
        that_content.slideUp(200);
        this_content.slideDown(200);
        }
      });
      
    // Click on BUTTON
    $(".save").click(function(){
      
      var this_title = $(this).parents(".step").children(".step-title");
      var this_content = $(this).parents(".step").children(".step-content");
      var that_title = $(".step-title");
      var that_content = $(".step-content");
        
      if (this_title.hasClass("active"))
      {
        that_title.addClass("active");
        this_title.removeClass("active");
        that_content.slideDown(200);
        this_content.slideUp(200);
      }
    });
    
    });
    
    
    

    正如您所看到的,我在两个函数上重复使用相同的变量,因此也是我问题的根源。

    **问题** 我有办法在多个函数中共享这些变量吗?

    当我将它们从功能的本地范围中取出时,它们无法工作。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

他们有多种方式可以解决这个问题。

全局变量在Js中被认为是坏事(甚至是严格模式下的错误),所以也许你应该保持它原样,或者用一个参数创建一个函数(这只会触发你函数的一部分)。

如果你真的想设置一个"全球"变量,您必须在变量名称之前省略var

foo = bar

然而正如我所说,它在严格模式下被视为错误,并且可能导致不同的问题。 A"清洁工"这样做的方法是将变量赋值给窗口对象。

window.foo = bar

将像全局变量一样工作,具有更少的缺点和更多的可读性。