javascript - 使用原型(prototype)的基本树结构导航

标签 javascript dom prototypejs

希望有人能提供帮助。我正在尝试摆弄 Prototype JS,并且对我正在尝试构建的基本可折叠导航结构有疑问。

除一件事外,以下内容运行良好。我想让 JS 识别子或“下一个”DOM 元素是否为空而不触发。

代码是:

Event.observe(document, 'dom:loaded', function() {  
 $$('#leftnav li a').each(function(element) {  
  Event.observe(element, 'click', function(event){ 
  Event.stop(event);
  Event.element(event).next(0).toggle(); 
  Event.element(event).up(0).toggleClassName('active');
  }, 
  false);             
 });  
});

因此,如果没有嵌套的“UL”,则不要触发。当我试图将其分解为 if else 时,无论如何它似乎都失败了。

想法或建议?

谢谢!

最佳答案

假设您的 HTML 看起来像这样:

  <div id="leftnav">
    <ul>
      <li>
        <a>Section A</a>
        <ul>
          <li>
            <a>Subsection A.1</a>
          </li>
        </ul>
      </li>
      <li>
        <a>Section B</a>
      </li>
    </ul>
  </div>

我认为以下 javascript 将完成扩展或压缩嵌套列表:

Event.observe(document, 'dom:loaded', function() 
{  
  $$('#leftnav li a').each(function(anchor) 
  {  
    anchor.observe('click', function(e)
    { 
      e.stop();
      var el = e.element();
      var next = el.next('ul');
      if (next)
      {
        next.toggle();
      }
      el.up('li').toggleClassName('active');
    });             
 });  
});

关于javascript - 使用原型(prototype)的基本树结构导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1950438/

相关文章:

对象字面量与函数相比 Javascript 性能提升

html - 空的 HTML 元素无意中用它的内容包裹了另一个元素

jquery - 使用 jQuery 查找包含自身(如最接近但向下遍历)

javascript - jQuery closest 函数的原型(prototype)等价物

javascript - 使用 clearTimeout 取消超时事件

javascript - 如何获取文档创建后添加的点击元素的ID?

javascript - 如何在 Phonegap 中发布表单?

javascript - 在对象数组中添加匹配键的值

javascript - 强制 DOM 替换触发显示动画

html - 使用 Prototype 隐藏所有具有特定类的 div?