将图像宽度设置为span标记

时间:2011-09-23 10:46:21

标签: javascript jquery css image width

我有这个HTML代码

<ul>
    <li><a href="#"><img src="path_to_image1"><span>some text</span></a></li>
    <li><a href="#"><img src="path_to_image2"><span>some text</span></a></li>
    <li><a href="#"><img src="path_to_image3"><span>some text</span></a></li>
</ul>

图像的宽度不同。

我需要将SPAN元素的宽度设置为与IMG宽度相等。 这是我通过查看StackOverflow板编写的代码。

$(document).ready(function() {
    $("ul li a").each(function() { 
        var theWidth = $(this).find("img").width();
        $("ul li a span").width(theWidth);
    });
});

现在此代码仅返回最后一个图像的宽度。 要改变什么,所以我可以将span元素的宽度与img相同?

由于

6 个答案:

答案 0 :(得分:4)

$('ul li img').each(function() {
  var imgWidth = $(this).width();
  $(this).next('span').css({'width': imgWidth});
});

答案 1 :(得分:1)

您只需更正一行:

$("ul li a span").width(theWidth);

替换为:

$(this).find('span').width(theWidth);

答案 2 :(得分:0)

替换此行

$("ul li a span").width(theWidth);

$(this).find('span').width(theWidth);

说明:行$("ul li a span").width(theWidth);设置所有三个span元素的宽度 'each'循环运行3次 第一次时间将所有三个跨度设置为第一个图像的宽度。
第二时间将所有三个跨度设置为第二个图像的宽度。
...

答案 3 :(得分:0)

答案在你自己的代码中,差不多......

 $(this).find("span").width(theWidth);

答案 4 :(得分:0)

您是否可以将<li>的宽度设置为与图像相同的宽度,并将<span>设置为display: block;

然后跨度将与其包含的宽度(<li>)一样宽,并且它会为您节省一些额外的jquery,试图挖掘到跨度级别。

另外,为了帮助加速你的jquery选择器,只需在列表中添加一个id并定位,而不是试图匹配ul li a...;现在你所要做的就是匹配#widths

实施例

<ul id="widths">
    <li><a href="#"><img src="path_to_image1"><span>some text</span></a></li>
    <li><a href="#"><img src="path_to_image2"><span>some text</span></a></li>
    <li><a href="#"><img src="path_to_image3"><span>some text</span></a></li>
</ul>

$(document).ready(function() {
    $('#widths img').each(function() {
        var imgWidth = $(this).width();
        $(this).next('span').css({'width': imgWidth});
    });
});

答案 5 :(得分:0)

有很多方法,这对我有用。

$(document).ready(function () {
    $("ul li a img").each(function (index) {
        $(this).next().width($(this).width()).css("display", "block");
    });
});