使用jQuery根据父位置在子li上设置Margin

时间:2012-11-16 21:05:56

标签: jquery css

我正在开展一个项目,我们正在抓取一个网站并提取内容,因此我无法控制div或lis的结构。

我遇到的问题是菜单上的下拉菜单没有与父菜单项对齐。我正在寻找一些有助于解决此问题的css / jquery here's a link to the fiddle: http://jsfiddle.net/9gQCH/3/

CSS& HTML

    #item1, #item2 {        
       background-color:#efefef;           
       display:inline;
       font-size:14px;
       margin-right:3px; 
       padding:5px; 
    }

    .Submenu {
        display: none;
        padding: 4px; 
        margin-top:18px;
        background-repeat:no-repeat;
    }  

    .Menu li:hover .Submenu{
        background-color:orange;
        display:inline;
        color: black;
        padding: 3px 5px;
        position:absolute;
    }



    <div class="Menu">
    <li id="item2">
        High level Item 1
        <div class="Submenu">
            <div>
                   Nested Item 1         
            </div> 
            <div>
                   Nested Item 2       
            </div>         
        </div>
    </li>  

    <li id="item2">
        High level Item 2
        <div class="Submenu">
            <div>
                   Nested Item 3         
            </div> 
            <div>
                   Nested Item 4       
            </div>         
        </div>
    </li> 
    </div> 

2 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/9gQCH/7/

使用JQuery

$(".Submenu").each(function(){
    $(this).css("left",$(this).parent().offset().left);
});​

答案 1 :(得分:0)

你不需要jQuery。只需将其添加到您的CSS:

.Menu li { position: relative; }

更新(将left: 0;添加到您的.Submenu课程):

.Menu li:hover .Submenu{
    background-color:orange;
    display:inline;
    color: black;
    padding: 3px 5px;
    position:absolute;

    left:0; // <------
}

(如果您认为有必要,还可以添加top属性)

小提琴:http://jsfiddle.net/kboucher/gbhtC/