2009-09-09 114 views
0

嗨大家,MooTools的顶部面板没有出现

我使用this使用滑动的mootools(用于定位,代码基本上是相同的)顶部面板。

我希望它在页面加载时出现,意思是index.html被加载。 我实现了这个只需添加相应的javascript来的index.html:

<script type="text/javascript"> 
    window.addEvent('domready', function(){ 
    var mySlide = new Fx.Slide('top-panel'); 
    $('toggle').addEvent('click', function(e){ 
    e = new Event(e); 
    mySlide.toggle(); 
    e.stop(); 
    }); 
    }); 
</script> 

(当然这也是顶部面板本身) 当您单击此顶部面板中的链接时,一个新的页面will be loaded into a specified div,并且然后,顶部面板应该被隐藏。

我想你可以通过一些JavaScript添加

var mySlide = new Fx.Slide('top-panel').hide(); 

mySlide.hide(); 

做到这一点。我认为它应该执行,当ahah.js -javascript完成将内容加载到div中时,我尝试添加上面引用的javascript以及ahah.js中mySlide.hide()的两个变体。 (在最后一个getElementById之后进入ahahDone())。

使用此设置,我得到以下呈现。 (这是在点击相应的链接后,将HTML文件中的内容加载到div中,然后单击页面顶部的“更多(更多)”链接,这应该滑动到顶部面板上。)但是,只有按钮是总是可见(子面板),并且可见,实际的面板内容不显示。

任何想法?如果你可以留下一个简短的解释答案,那会很好。

非常感谢

回答

2

这看起来像一个范围界定问题。您在一个匿名函数内声明mySlide,其范围将被限制为该函数。稍后,当点击$('toggle')时,被触发的事件超出该功能的范围,因此它无法访问mySlide

速战速决(如果你不介意使用全局变量)可能是主要的Javascript声明var mySlide=null,让你有一个封闭,然后改变当前var mySlide=new Fx.Slide(...)只是mySlide=new Fx.Slide(..)

(也可能是别的完全......)

+0

我会试试看。谢谢:) – ngmir 2009-09-09 20:05:11

+0

nope,不会改变什么 – ngmir 2009-09-09 20:22:50

+1

作用域?我不这么认为,不在这里。事件函数应该继承父函数的变量。 他的问题是,他使用Fx.Slide这是一个mootools 1.11方法,但在1.2(他也使用,因此它已覆盖类)已弃用。 – 2009-09-14 10:05:56