JQuery可以在第二行包装之前检测到行中的最后一个元素吗?

Mar*_*som 8 css jquery line-breaks word-wrap word-break

    <style>
    .ms_menu ul{list-style:none;}
    .ms_menu ul li{float:left; padding:5px; border-right:1px solid #000000;}
    .ms_menu ul li:last-of-type{border-right:none;}
    </style>
Run Code Online (Sandbox Code Playgroud)

示例html:

    <div class="ms_menu">
     <ul>
       <li>menu1</li>
       <li>menu2</li>
       <li>menu3</li>
       <li>menu4</li>
       <li>menu5</li>
       </ul>
    </div>
Run Code Online (Sandbox Code Playgroud)

我有一个顶级导航菜单,其中包含一个带有LI左侧浮动的UL.

每个LI都有一个CSS样式{border-right 1px solid},它充当每个菜单选项之间的分隔符,我使用了CSS选择器last-of-type来删除最后一个LI上的border-right.

这一切看起来都很棒,直到浏览器窗口重新调整大小并且一些LI下拉到第二行.最后一个子样式规则仍然可以根据需要应用,但此时我还想在它包装到第二行之前从最后一个LI中删除border-right.

有没有jQuery或一般的Javascript方法来检测自动换行/换行之前一行的最后一个元素?

Jos*_*ber 7

你可以测量他们的offset:

$(window).resize(function() {

    var offsets = [],
        $listItems = $('.ms_menu li');

    $listItems.each(function() {
        offsets.push( $(this).offset().top );
    });

    $.each(offsets, function(i, v) {
        $listItems.eq(i).css('border-right-width', v > offsets[index + 1] ? 0 : 1);
    });

}).resize();
Run Code Online (Sandbox Code Playgroud)