在我的init
中,我设置了一些变量和一个使用这些变量的动画。在jquery函数中设置变量
如果我想在我的clickSlide
中使用相同的动画/变量,该怎么办? http://jsfiddle.net/lollero/4WfZa/(这显然是行不通的)
我可以使它http://jsfiddle.net/lollero/4WfZa/1/(删除var
)
全球问题是:是否有更好的办法,或这是完全可以这样做的方法?
在我的init
中,我设置了一些变量和一个使用这些变量的动画。在jquery函数中设置变量
如果我想在我的clickSlide
中使用相同的动画/变量,该怎么办? http://jsfiddle.net/lollero/4WfZa/(这显然是行不通的)
我可以使它http://jsfiddle.net/lollero/4WfZa/1/(删除var
)
全球问题是:是否有更好的办法,或这是完全可以这样做的方法?
把变量的函数外,比获得比作在功能使用价值
var getWidth ;
var getHeight ;
$(function(){
var slideBox = {
gb: $('#box'),
init: function() {
sb = this,
getBox = sb.gb,
getWidth = getBox.width(),
getHeight = getBox.height();
getBox.animate({ marginLeft: '+='+getWidth }, 600);
$("#button").on("click", this.clickSlide);
},
clickSlide: function() {
getBox.animate({ marginLeft: '+='+getWidth }, 600);
}
};
slideBox.init();
});
让你clickside功能
如果你是要去使用它们,你可以得到vlue很多,我会让他们成为对象的属性。
全球是全球性的。这与关闭有什么关系?无论如何,我认为使它们属性的对象是最好的解决方案。 – 2012-04-04 08:28:30
你说得对。我错过了这一点。 – 2012-04-04 15:54:52
您的变量看起来没有必要,您可以访问您需要的所有内容: http://jsfiddle.net/4WfZa/6/。如果您确实需要存储它们,则可以将它们添加到slideBox对象中,然后将它们填充到init中。这样,变量就会存储在对象中,并且可以用在其中的任何函数中。
有关javascript命名空间的一篇很好的文章,包括如何设置私有变量和公共变量,请参见this article。
我至少会把它们放在'ready'事件处理程序中,以便它们不是全局的。但无论如何,这只允许有一个幻灯片对象。 – 2012-04-04 08:28:57