假设手风琴下拉式采用标准形式:
<ul>
<li>
<a href="#">Main Element</a>
<ul>
<li>
<a href="#">Dropdown Element</a>
</li>
</ul>
</li>
</ul>
当点击父元素链接时,我正在使用jQuery进行扩展:
var $j = jQuery.noConflict();
function initMenus() {
$j('ul.menu ul').hide();
$j.each($j('ul.menu'), function(){
$j('#' + this.id + '.expandfirst ul:first').show();
});
$j('ul.menu li a').click(
function() {
var checkElement = $j(this).next();
var parent = this.parentNode.parentNode.id;
if($j('#' + parent).hasClass('noaccordion')) {
$j(this).next().slideToggle('normal');
return false;
}
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
if($j('#' + parent).hasClass('collapsible')) {
$j('#' + parent + ' ul:visible').slideUp('normal');
}
return false;
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$j('#' + parent + ' ul:visible').slideUp('normal');
checkElement.slideDown('normal');
return false;
}
}
);
}
$j(document).ready(function() {initMenus();});
单击时向主元素添加一个类(也就是在下拉列表扩展时启用了类)我试图使用.toggleClass(className)而没有运气,这很可能是我的定位。我在哪里可以添加此元素以获得所需的效果?
答案 0 :(得分:0)
尝试替换此行:
var parent = this.parentNode.parentNode.id;
使用:
var parent = $j(this).parent().closest('a').attr('id');
而不是:
$j(this).next().slideToggle('normal');
尝试:
$j(this).parent().closest('a').slideToggle('normal');
closest
向上移动以查找最接近您链接的链接。