手风琴菜单 - 我如何知道它会向上或向下滑动?
我有一个手风琴菜单(下面的代码),在手风琴菜单下有一个标签框。 当手风琴菜单扩展时,我想让我的标签框位于扩展菜单下方,而不是扩展菜单覆盖我的标签框。 因此,在计算打开的子项数量后,我更改了标签框的 CSS 属性“top”的值。
<div id="accordion">
<h3>NOTEBOOKS</h3>
<div class="sub_items" style="padding-top:0px;padding-bottom:0px;">
<div onMouseOver="bgFadeIn(this)" onMouseOut="bgFadeOut(this)">
<a href="http://127.0.0.1/casecrown_final/index.php/notebooks/black-slim.html">
<span>BLACK SLIM</span></a>
</div>
<div onMouseOver="bgFadeIn(this)" onMouseOut="bgFadeOut(this)">
<a href="http://127.0.0.1/casecrown_final/index.php/notebooks/checkered-slim.html">
<span>CHECKERED SLIM</span></a>
</div>
</div>
<h3>Another item</h3>
<div class=sub_items" ......
.......
.....
</div>
jQuery(document).ready(function() {
var countTotalCategories = jQuery('#accordion > h3').size();
var defaultHeight = countTotalCategories * 30;
jQuery('#accordion> div').hide();
jQuery('#accordion> h3').click(function() {
jQuery(this).next('div').slideToggle(400)
.siblings('div:visible').slideUp(400);
countProducts = jQuery(this).next('div').children('div:visible').size();
var calculatedHeight= defaultHeight + 29 * countProducts;
jQuery('.mini-product-tags').css('top' , calculatedHeight + 'px');
});
现在,我如何知道用户是否正在打开一个新菜单来扩展它......或者用户正在关闭菜单。 我不知道如何确定用户是否正在关闭菜单,因此我可以在所有手风琴菜单关闭时将标签框值设置为默认值。 看来我只是在单击事件之后才发现,我不确定何时处理 jQuery 切换事件。
I got an accordion menu (code below) and under the accordion menu I have a tag box. When accordion menu extends, I want to make my tag box go below the extended menu instead of extended menu covering up my tag box. So I change the value of CSS property "top" for my tag box after I count the # of sub-items being opened.
<div id="accordion">
<h3>NOTEBOOKS</h3>
<div class="sub_items" style="padding-top:0px;padding-bottom:0px;">
<div onMouseOver="bgFadeIn(this)" onMouseOut="bgFadeOut(this)">
<a href="http://127.0.0.1/casecrown_final/index.php/notebooks/black-slim.html">
<span>BLACK SLIM</span></a>
</div>
<div onMouseOver="bgFadeIn(this)" onMouseOut="bgFadeOut(this)">
<a href="http://127.0.0.1/casecrown_final/index.php/notebooks/checkered-slim.html">
<span>CHECKERED SLIM</span></a>
</div>
</div>
<h3>Another item</h3>
<div class=sub_items" ......
.......
.....
</div>
jQuery(document).ready(function() {
var countTotalCategories = jQuery('#accordion > h3').size();
var defaultHeight = countTotalCategories * 30;
jQuery('#accordion> div').hide();
jQuery('#accordion> h3').click(function() {
jQuery(this).next('div').slideToggle(400)
.siblings('div:visible').slideUp(400);
countProducts = jQuery(this).next('div').children('div:visible').size();
var calculatedHeight= defaultHeight + 29 * countProducts;
jQuery('.mini-product-tags').css('top' , calculatedHeight + 'px');
});
Now, how do I know that whether user is opening up a new menu to extend it...OR the user is closing the menu. I have no idea how to determine whether the user is closing up the menu so I can set the tag box value to the default when all accordion menu is closed. It seems like I only figure that out after the click event, I'm not sure when jQuery toggle event is being handled.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能不是最漂亮的方法,但为什么不直接找出
之后的下一个元素(即您实际的手风琴容器
> 标签)是否有
display: none
?如果您的容器可见,则单击事件将关闭它。 如果容器不可见,则单击事件将打开它。
所以:
It might not be the prettiest way of doing it, but why not just find out whether the next element after your
<h3>
(i.e. your actual accordion container<div>
tag) hasdisplay: none
or not?If your container is visible, then the click event will be to close it. If the container is not visible, then the click event will be to open it.
So:
我同意,您需要检查可见性。 我还会考虑使用不同的标记。
这是工作示例
jquery:
html:
I agree, you'll want to check for visibility. I would also consider using a different markup.
Here is a working example
the jquery:
the html: