我正在创建一个简单的手风琴菜单,并带有两种方法。
- 单击步骤标题
- 通过单击步骤中的" 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
将像全球变量一样工作,较少的偏低和更多的可读性。