2013-06-03 3 views
3

내 magento 설정을 수정 한 이후로 일부 자바 스크립트 수정에 도움이 필요합니다.자바 스크립트가 더 이상 작동하지 않습니다.

내가 왜 작동하지 않는지 알 수 있습니다. 'li'이었던 'a'의 부모 요소를 찾고 있지만 이제는 내가 추가 한 Div의 하나입니다. 내가 알아 내지 못하는 건 내가 고치는 방법이야. 내가 하이퍼 링크에 아래에서 추가 한

<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> 

:

스크립트

여기
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이입니다. 나는 .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을 이동 지정된 selector와 일치하는 요소를 찾을 때까지 계층 구조를 반환합니다. 검색에 실패하면 undefined이 반환됩니다.

+0

이것은 작동하는 것, 누락 된 유일한 것은 페이지가로드 될 때 div가 모두 표시된다는 것입니다. 이 문제를 해결하기 위해 무엇이 바뀌어야하는지 잘 모르겠습니다. – bulldog5046

+0

이 줄 - 비슷한 방법으로 (예 :'el.up ('li()')로'if ($ (el.parentNode) .hasClassName ('active'))''-'initTab' ')'). – raina77ow

+0

대단히 감사합니다! 정말 고마워. :) – bulldog5046

관련 문제