1

理論的には、注文されていないアイテムのリストがある場合

<ul>
    <li><a>Link1</a></li>
    <li><a>Link1</a></li>
</ul>

jQueryで次のことを行うにはどうすればよいですか?

1)個々のa要素の幅を見つけます

2)個々のli要素の幅を見つけます

a3)親li要素の幅から各子要素の幅を引きます

4)次に、各親li要素に合計を追加します

これは機能しません:

$('ul > li').each(function() {
  var liWidth = (this).width();
  var aWidth = ('ul > li > a').width();
  var subractedWidth = parseFloat(liWidth) - parseFloat(aWidth);
  var newWidth = subtractedWidth + parseFloat(liWidth);
  $(this).css('width',newWidth);  
});

前もって感謝します!

4

3 に答える 3

2

いくつかの場所でを使用するのを忘れており、特定の範囲内の幅$を取得しようとしているため、DOM全体を再クエリしないでください。これはそれを行います:<a><li>

$('ul > li').each(function() {
    var liWidth = parseFloat($(this).width());
    var aWidth = parseFloat($(this).find('a').eq(0).width());
    $(this).width((liWidth - aWidth) + liWidth);
});
于 2012-05-27T00:28:53.000 に答える
1

あなたができる

$('ul > li > a').each(function () {
    var li = $(this).closest('li'), 
        liWidth = li.width(),
        aWidth = $(this).width();

    li.width(liWidth + (liWidth - aWidth));
});
于 2012-05-27T00:53:10.650 に答える
0

$を忘れたようです。

$('ul > li').each(function() {
  var liWidth = $(this).width();
  var aWidth = $(this).find('a').width();
  var subractedWidth = parseFloat(liWidth) - parseFloat(aWidth);
  var newWidth = subtractedWidth + parseFloat(liWidth);
  $(this).css('width',newWidth);  
});
于 2012-05-27T00:30:56.653 に答える