1

我需要更改具有特定类的所有 div 元素的宽度。例如:

<div class="grid1 first">
<div class="grid2">
<div class="grid3">
<div class="grid4 last">

所有 DIV 的初始宽度均为 23%。具有“first”或“last”类的 DIV 需要额外增加 1% 的宽度。我试过这段代码:

var addwidth = 0;
$("[class^=grid]").each(function() {
   if ($(this).hasClass("first") || $(this).hasClass("last")) {
       addwidth += $(this).width() + 1 + "%";
       $(this).width(addwidth);
   }
});

谢谢你。

4

5 回答 5

2

如果您不需要动态宽度,您可以使用 CSS 执行此操作:

.first, .last {
    width: 24%;
}

您可以动态计算宽度,尽管您必须解决 jQuerywidth()css()方法将返回以像素为单位的宽度这一事实。为此,您可以获取父项的宽度并计算该子项所占的百分比,然后更新该值并设置子项的宽度:

$(".first, .last").each(function () {
    var that = $(this),
        parentWidth = that.parent().width(),
        width = that.width(),
        percentage = parseInt((width/parentWidth)*100, 10)
    ;

    that.css("width", (percentage + 1) + '%');
});

工作演示

于 2013-08-07T18:39:56.220 回答
0

您可能在 css 中设置了初始宽度“23%”。
在您的代码中,您正在进行整数和字符串的连接,这将不起作用,因此将该代码分成两行,如下所示。

var addwidth = 0;
$("[class^=grid]").each(function() {
   if ($(this).hasClass("first") || $(this).hasClass("last")) {
       addwidth = parseInt($(this).css('width')) + 1;
       console.log(addwidth);
       $(this).css('width',addwidth+"%");
   }
});
于 2013-08-07T18:44:31.753 回答
0
$('[class^="grid"]').each(function(i,element){
    if ( $(element).is('.first') || $(element).is('.last') ) {
    var width = ( 100 * parseFloat($(element).css('width')) / parseFloat($(element).parent().css('width')) ) + 1 + '%'
      $(element).css('width',width);
    }
})
于 2013-08-07T19:24:03.553 回答
0

您也可以使用该代码,例如

$(.last).css('宽度',(23+1)+'%');

于 2013-08-07T18:48:33.377 回答
0

替换这个:

addwidth += $(this).width() + 1 + "%";
$(this).width(addwidth);

有了这个:

addwidth += $(this).width() + 1;
$(this).width(addwidth + "%");
于 2013-08-07T18:42:00.793 回答