1

Prototypeライブラリをサイトに追加してから、次のコードを追加します。ページを開いたときに、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>

ありがとうございました。

4

2 に答える 2

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
});
于 2013-03-19T15:08:06.567 に答える
0

これを試してみてください。非表示の継ぎ目は要素のセットに直接適用できません:

$$('.block-category li.parent ul').each(function(elm) {
   elm.hide();
});
于 2013-03-19T14:27:07.017 に答える