2013-06-03 88 views
3

我需要一些幫助修復一些JavaScript,因爲我修改了我的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」)的東西,但是我需要一些幫助才能使它起作用。

+0

控制檯中是否有任何錯誤? – Mansfield

+2

'$'是什麼?什麼是$$?如果不知道你正在使用什麼庫,很難提供幫助。 – jbabey

+0

總是可以做一個循環(其中'this'是你的錨點)'curElement = this.parent; while(curElement.tagName!=「li」){curElement = curElement.parent;}' –

回答

2

你應該使用這條線(而不是var li = $(a.parentNode), ...,因爲現在你需要的是最接近父<li>元素。

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

原型的Element#up方法傳播了DOM直到找到與給定選擇器匹配的元素,如果搜索失敗,則返回undefined

+0

這似乎工作,唯一缺少的是,頁面加載時,div的都是可見的。我無法完全瞭解需要改變以解決這個問題嗎? – bulldog5046

+0

這行代碼也需要用類似的方法解決(例如用'el.up('li('li(')') 「)')。 – raina77ow

+0

非常感謝!我真的很感謝你的幫助:) – bulldog5046