我需要一些帮助修复一些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> </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 :(得分:2)
您应该使用此行(而不是var li = $(a.parentNode), ...
,因为您现在需要最接近的父<li>
元素。
var li = a.up('li'), ul = $(li.parentNode);
Prototype的Element#up方法沿DOM层次结构向上移动,直到找到与给定选择器匹配的元素。如果搜索失败,则返回undefined
。
答案 1 :(得分:-1)
您想使用原型element.up()