0

HTML:

<li class="home"><a href="/"><img alt="home" src="img/gohome.png"/></a></li>
<li class="portfolio closed" ><a href="portfolio"><span>portfolio</span></a></li>
<li class="articles opened" style="margin-right: 849px;"><a href="articles"><span>articles</span></a></li>
<li class="contact"><a href="contact"><span>contact</span></a></li>

JS:

    $('nav li').each(function(index) { //Navigation total width
         navWidth += $(this).width();
    });

私はそのようなスクリプトを持っていますが、exのクラスに基づいて特定の要素までLi要素の幅を数えなければなりません。ポートフォリオ。そして、私はそれを行う方法がわかりません。

4

2 に答える 2

2

別のオプションnextUntil()

$("nav li:first").nextUntil(".portfolio").andSelf().each(function(index) {
     navWidth += $(this).width();
});
于 2012-12-26T00:31:00.200 に答える
1

1 つの方法は、そのクラスの要素に遭遇したときにループを終了することです。

$('nav li').each(function() {
     if ($(this).hasClass('portfolio')) {
         return false;
     }
     navWidth += $(this).width();
});

別の方法は、 class を持つ要素まですべての要素を選択することportfolioです。これは、その要素のインデックスを取得し、そのインデックスまでのすべての要素を選択することで実行できます。

var $lis = $('nav li');

$lis.slice(0, $lis.filter('.portfolio').index()).each(function() {
    // ...
});

liこれは、これらすべての要素が互いに兄弟であるという仮定の下にあります。

参考: .each.filter.slice

于 2012-12-26T00:25:14.907 に答える