【发布时间】:2012-12-08 10:37:10
【问题描述】:
我有 3 级菜单。 当没有足够的屏幕空间来显示子菜单时,我希望子菜单向左而不是向右打开。
请查看屏幕截图以了解确切的想法。
我想使用 superfish 菜单的 onBeforeShow() 函数来解决这个问题,但我无法让它按预期工作。
到目前为止,这是我的代码:
$("ul.sf-menu").superfish({
delay: 1000,
speed: 'fast',
disableHI: true,
onBeforeShow: function()
{
thisWidth = $(this).width();
if ( thisWidth > 0 )
{
thisParent = this.parent();
parentLeft = thisParent.offset().left;
parentWidth = this.parent().width();
parentRight = parentWidth + parentLeft ;
mainLeft = document
.getElementsByClassName('sf-menu')[0].offsetLeft;
mainRight = document
.getElementsByClassName('sf-menu')[0].offsetWidth;
if ( ( thisWidth + parentLeft ) < ( mainLeft + mainRight ) )
{
if ( thisWidth > ( parentLeft + parentHeight ) )
{
$(this).css('left', - (parentLeft - mainLeft));
}
else
{
// open left
$(this).css('left', - (thisWidth - parentWidth));
}
}
}
}
});
【问题讨论】:
-
你为什么不把最后一项 ul 放在正确的位置来解决这个问题。