在超过1个函数之间共享变量



我正在创建一个简单的手风琴菜单,并带有两种方法。

  1. 单击步骤标题
  2. 通过单击步骤中的" Next/prev"按钮。

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);
  }
});
});

您可以看到,我在函数上重复使用相同的变量,因此是我问题的根源。

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

当我将它们从函数的本地范围中取出时,它们不起作用。

谢谢您的帮助。

它们是多种方法。

全局变量被认为是在JS中执行的坏事(甚至是在严格模式下的错误),因此也许您应该按原样保留它,或者使用参数制作函数(这仅触发您的函数的一部分)。

如果您真的想设置一个"全局"变量,则必须在变量的名称之前使用var

foo = bar

但是,正如我所说,这在严格模式下被认为是一个错误,并且可能导致不同的问题。"清洁更清洁"的方法将把变量分配给窗口对象。

window.foo = bar

将像全球变量一样工作,较少的偏低和更多的可读性。

相关内容

  • 没有找到相关文章

最新更新