2013-07-23 109 views
0

我想将xmenu-toggle类分配给一个元素,当单击元素时,会在其左边的botton侧显示一个菜单。我试着跟着,但是菜单的位置会在连续的点击中改变。怎么了?将元素相对于另一个元素定位

$('.xmenu-toggle').click(function (event) { 
     event.stopPropagation(); 
     var pos=$(this).offset(); 
     $(this).siblings('.xmenu').offset({top:pos.top+10,left:pos.left+10}).toggle(); 
    }) 

HTML:

<div class="xmenu-toggle">Click me!</div> 
<div class="xmenu">I am the menu, I have relative position</div> 
+0

能不能请显示出与此您的HTML标记? – DevlshOne

+0

你想'xmenu'移动到'xmenu-toggle'的左下角吗?或者'xmenu'最初是隐藏的,你希望它出现在那个位置? – DevlshOne

+0

@DevlshOne xmenu最初被隐藏。 – PHPst

回答

1

它看起来像它与.toggle()的位置做。我把它移到.offset()之前,它在同一个地方始终如一地出现。

$('.xmenu-toggle').click(function (event) { 
    var offset = $(this).offset(); 

    $(this).parent().find('.xmenu').toggle().offset({ 
     top: offset.top + 10, 
     left: offset.left + 10 
    }); 

}); 

jsFiddle Demo

+0

谢谢,它现在有效,但有没有解释这种行为? – PHPst

+0

不是我能找到的。从逻辑上讲,如果你仔细想想,如果这个元素仍然隐藏起来,那么固定位置将会很困难。 '.toggle()'事先允许它在可以调整位置之前确保渲染页面上的一些位置。 – DevlshOne

相关问题