Javascript脚本不再起作用

时间:2013-06-03 19:23:05

标签: javascript prototypejs

我需要一些帮助修复一些javascript,因为我修改了我的magento设置。

我可以看出为什么它不起作用,它正在寻找'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”)之类的东西,但我需要一些帮助才能让它发挥作用。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:-1)

您想使用原型element.up()