我的标记看起来像这样:
<ul class="menu collapsible">
<li class='expand sectionTitle home'>
<a class='clicker' href='#'>Home</a>
<ul class='acitem'>
<li class="section">stuff goes here
</ul>
</li>
<li class='expand sectionTitle section1'>
<a class='clicker' href='#'>Section 1</a>
<ul class='acitem'>
<li class="section">stuff goes here
</ul>
</li>
<li class='expand sectionTitle section2'>
<a class='clicker' href='#'>Section 2</a>
<ul class='acitem'>
<li class="section">stuff goes here
</ul>
</li>
</ul>
我想添加处理手风琴行为的jQuery脚本(见下文),以便在单击“clicker”元素时,其父div滑动到第二个位置。我总是希望顶部的“Home”div,但我希望在第二位置扩展哪个div“活跃”。
这是控制菜单的手风琴行为的jQuery:
jQuery.fn.initMenu = function() {
return this.each(function(){
var theMenu = $(this).get(0);
$('.acitem', this).hide();
$('li.expand > .acitem', this).show();
$('li.expand > .acitem', this).prev().addClass('active');
$('li a', this).click(
function() {
var theElement = $(this).next();
var parent = this.parentNode.parentNode;
if($(parent).hasClass('noaccordion')) {
$(theElement).slideToggle('normal', function() {
if ($(this).is(':visible')) {
$(this).prev().addClass('active');
}
else {
$(this).prev().removeClass('active');
}
});
return false;
}
else {
if(theElement.hasClass('acitem') && theElement.is(':visible')) {
if($(parent).hasClass('collapsible')) {
$('.acitem:visible', parent).first().slideUp('normal',
function() {
$('.acitem:visible', parent).first().prev().removeClass('active');
}
);
}
return false;
}
if(theElement.hasClass('acitem') && !theElement.is(':visible')) {
$('.acitem:visible', parent).first().slideUp('normal', function() {
$(this).prev().removeClass('active');
});
theElement.slideDown('normal', function() {
$(this).prev().addClass('active');
});
return false;
}
}
}
);
});
};
$(document).ready(function() {$('.menu').initMenu();});
答案 0 :(得分:5)
喜欢这个吗?
加入
var homeCheckTmp;
在顶部附近的变量声明和
之后homeCheckTmp = theElement.closest('li.expand');
if(!homeCheckTmp.is("li.home")) {
homeCheckTmp.insertAfter(homeCheckTmp.siblings('.home'));
}
在向下滑动元素之前。