2013-12-09 28 views
1

我寫了一個腳本,根據'display'屬性觀察點擊和盲/點,並且爲blindUp添加了一個隊列到終點的參數,以避免更嚴重的顯示的問題。這顯然是不實現這一點,因爲顯示的錯誤出現,如果點擊事件中的作用的中間調用的方式。這是代碼:scriptaculous blindUp/blindDown問題

<script type="text/javascript"> 
    $$('#leftnav_container #modules h2').each(function(El){ 
      El.observe('click',function(){ 
       container = this.next('div'); 
       display = container.getStyle('display'); 
       if(display == 'none'){ 
        container.blindDown({duration: 0.3}); 
       }else{ 
        container.blindUp({duration: 0.3, queue: 'end'}); 
       } 

      }) 
    }); 
</script> 

再次,問題是,我靠顯示屏上」 」。什麼是適當的方式呢?

回答

1

這應該首先把它簡化

$$('#leftnav_container #modules h2').invoke('observe','click',function(){ 
      container = this.next('div'); 
      Effect.toggle(container , 'blind', { duration: 0.3 }); 
}); 

,如果你只從$$()返回,那麼你可以使用PrototypeJS方法invoke()陣列中的所有元件上運行的一個方法。

http://api.prototypejs.org/language/Enumerable/prototype/invoke/

然後Effect.toggle()將檢查該元素是可見的,並做相應的上升/下降的影響。

試試這個,讓我知道它是否適合你。