我正在使用两种导航方式创建一个简单的手风琴菜单。
我的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);
}
});
});

正如您所看到的,我在两个函数上重复使用相同的变量,因此也是我问题的根源。
**问题** 我有办法在多个函数中共享这些变量吗?
当我将它们从功能的本地范围中取出时,它们无法工作。
感谢您的帮助。
答案 0 :(得分:2)
他们有多种方式可以解决这个问题。
全局变量在Js中被认为是坏事(甚至是严格模式下的错误),所以也许你应该保持它原样,或者用一个参数创建一个函数(这只会触发你函数的一部分)。
如果你真的想设置一个"全球"变量,您必须在变量名称之前省略var
:
foo = bar
然而正如我所说,它在严格模式下被视为错误,并且可能导致不同的问题。 A"清洁工"这样做的方法是将变量赋值给窗口对象。
window.foo = bar
将像全局变量一样工作,具有更少的缺点和更多的可读性。