2013-03-19 83 views
1

我已將原型庫添加到我的網站,然後添加下面的代碼。當我打開頁面時,我想隱藏ul中的所有內容。當打開頁面時,爲什麼不能隱藏內容?

Event.observe(window, 'load', function() { 
    $$('.block-category li.parent ul').hide() //why this line doesn't work 
    $$('.block-category li.parent > a span').each(function (element) { 
     element.observe('click', function (e) { 
      e.element().up().next('ul').toggle(); 
      e.preventDefault(); 
     }); 
    }); 
}); 

HTML:

<div class="block block-category"> 
    <li class="level-top parent"> 
    <a href="example.com/...."><span>text one</span></a> 
    <ul> //the 1 ul 
    <li><a><span>....</span></a></li> 
    <li><a><span>....</span></a></li> 
    <li><a><span>....</span></a></li> 
    <li><a><span>....</span></a></li> 
    </ul> 
    </li> 

    <li class="level-top"><a href="..."><span>....</span></a></li> 


    <li class="level-top parent"> 
    <a href="example.com/...."><span>text two</span></a> 
    <ul> //the 2 ul 
    <li><a><span>....</span></a></li> 

    </ul> 
    </li> 
    <li class="level-top parent"> 
    <a href="example.com/...."><span>text three</span></a> 
    <ul> 
    <li><a><span>....</span></a></li> 
    <li><a><span>....</span></a></li> 
    </ul> 
    </li> 
    </div> 

謝謝。

+0

使用$$('。block-category> li> ul')。hide(); – theshadowmonkey

回答

0

$$()方法返回CSS選擇器匹配的元素的列表 - 如果你想在它們之間迭代並運行同樣的方法使用invoke()方法

$$('.block-category li.parent ul').invoke('hide'); 
$$('.block-category li.parent ul').invoke('observe','click',function(){ 
    alert('element was clicked'); 
}); 

如果你需要做的不僅僅是運行一個單一的方法使用each()方法

$$('.block-category li.parent ul').each(function(item){ 
    item.hide(); 
    //item.update('new content'); 
    //etc 
}); 
+0

我需要把代碼放入Event.observe(window,'load',function(){...?如果我想在加載頁面的時候運行代碼,就像document.ready。我該怎麼做? – down1337

+0

yes你可以把它放在那個觀察者中 - 通常我使用'document.observe(「dom:loaded」,function(){});'當DOM準備就緒時會觸發 –

0

試試這個,那個隱藏的接縫不能應用於一組元素直接:

$$('.block-category li.parent ul').each(function(elm) { 
    elm.hide(); 
}); 
相關問題