1

メニューのアイテムを計算し、計算された幅をpxでliに割り当てるjqueryがあります。

コードは次のとおりです。

$(document).ready(function(){
    $('div#new-menu-lower ul li').css('width', ($('div#new-menu-lower ul').width() / $('div#new-menu-lower ul li').length));
    $(function() {
        var menuWidth = $('div#new-menu-lower ul').width();
        var listItems = $('div#new-menu-lower ul li').length;
        var itemWidth = Math.floor(menuWidth * (1/listItems)) - 40;
        $('div#new-menu-lower ul li').css('width', itemWidth);
    });
});

問題はlistItems38 項目として表示され、間違っているすべての李を計算するようです。子要素ではなく、最初の ul li だけをカウントする必要があります。

これを止めるためにできることはありますか?

4

1 に答える 1

4

変化する

var listItems = $('div#new-menu-lower ul li').length;

var listItems = $('div#new-menu-lower > ul > li').length;

あなたの仕事を達成するには、 jQeryの親>子セレクターが必要です。

jQueryドキュメントから:

「親」で指定された要素の「子」で指定されたすべての直接の子要素を選択します。

CSS セレクターとして、子コンビネーターは、Safari、Firefox、Opera、Chrome、および Internet Explorer 7 以降を含む最新のすべての Web ブラウザーでサポートされていますが、特に Internet Explorer バージョン 6 以下ではサポートされていません。ただし、jQuery では、このセレクターは (他のすべてのセレクターと共に) IE6 を含む、サポートされているすべてのブラウザーで機能します。

子コンビネータ (E > F) は、第 1 レベルの子孫のみを選択するという点で、子孫コンビネータ (EF) のより具体的な形式と考えることができます。

于 2012-06-27T13:38:43.313 に答える