2009-09-09 31 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