3

自从我修改了我的 magento 设置后,我需要一些帮助来修复一些 javascript。

我知道为什么它不起作用,它正在寻找“a”的父元素,它是“li”,但现在是我添加的 Div 之一。我无法弄清楚我是如何解决它的。

这是脚本

Varien.Tabs = Class.create();
Varien.Tabs.prototype = {
  initialize: function(selector) {
    var self=this;
    $$(selector+' a').each(this.initTab.bind(this));
  },

  initTab: function(el) {
      el.href = 'javascript:void(0)';
      if ($(el.parentNode).hasClassName('active')) {
        this.showContent(el);
      }
      el.observe('click', this.showContent.bind(this, el));
  },

  showContent: function(a) {
    var li = $(a.parentNode), ul = $(li.parentNode);
    ul.select('li', 'ol').each(function(el){
      var contents = $(el.id+'_contents');
      if (el==li) {
        el.addClassName('active');
        contents.show();
      } else {
        el.removeClassName('active');
        contents.hide();
      }
    });
  }
}
new Varien.Tabs('.product-tabs');

这是我修改后的html:

    <li id="product_tabs_<?php echo $_tab['alias'] ?>" class="<?php echo !$_index?' active first':(($_index==count($this->getTabs())-1)?' last':'')?>">
        <div class="sidebar-block-2">
        <div class="block-title">
            <div class="title-corners-top"><div><div>&nbsp;</div></div></div>
            <div class="title-border-left">
            <div class="title-border-right">
            <div class="title-border-top">
        <a href="#"><strong><span><?php echo $_tab['title']?></span></strong></a>
         </div>
         </div>
         </div>
         <div class="clear"></div>
         </div>
         </div>
         </li>

我已经从下面添加到超链接。我想我需要使用 .closest("li") 之类的东西,但我需要一些帮助才能让它工作。

4

2 回答 2

2

您应该使用这一行(而不是var li = $(a.parentNode), ...,因为现在您需要最接近的父级<li>element.

var li = a.up('li'), ul = $(li.parentNode);

Prototype 的Element#up方法向上遍历 DOM 层次结构,直到找到与给定选择器匹配的元素。如果搜索失败,undefined则返回。

于 2013-06-03T19:30:23.663 回答
-1

你想使用原型的element.up()

于 2013-06-03T19:29:55.847 回答