【问题标题】:Jquery td cell width always 0jQuery td 单元格宽度始终为 0
【发布时间】:2018-08-26 15:06:30
【问题描述】:

我已经创建了这个表。 该表应具有与整个表相同的列宽。 如果单元格具有不同的值,则表格正常增长。 但我希望表格在给定的表格宽度内具有相同的列。

示例: 屏幕分为左右两段。右边的段有表格,但是这个段的宽度大于表格的宽度。所以我可以计算具有相同宽度值的每一列以显示具有相同列宽的表。

看起来像这样

  Posart   |   Datum    |
1234567890 | 1234567890 |
   1234    | 12.12.2019 |

<table  id="Auftragspositionen" class="standardliste" summary="">
<tr><th id="Posart">Posart</th><th id="Datum">Datum</th>
</tr>
<tr>
<td headers="Posart"><div class="left noborder">001.00<br/>Z <br/>Zeit</div></td>
<td headers="Datum"><div class="middle noborder">12.03.2018</div></td>
</tr></table>

And my jQuery select is this !

b2=$('#Auftragspositionen');
b2.find("tr th").children("td").each(function(i) {
        tdWidth = $(this).width();
        alert(i + 'td width is ' + $(this).tdWidth);
        });

我的问题是,每个单元格 td width=0 ??? 为什么会这样?

【问题讨论】:

    标签: jquery html-table cell


    【解决方案1】:

    观察你的这部分代码:

    tdWidth = $(this).width();                     // here you define the tdWidth variable
    alert(i + 'td width is ' + $(this).tdWidth);
    

    在第二行中,不是访问您刚刚创建的 tdWidth 变量,而是当您使用 $(this).tdWidth 时,您实际上尝试访问一个名为 tdWidth 的 jQuery 属性,该属性并不存在。

    所以解决方案是真正访问您的变量(在那里丢失$(this).)。另外最好在本地声明变量,使用var

    var tdWidth = $(this).width();         // using var here
    alert(i + ' td width is ' + tdWidth);  // not $(this).tdWidth !
    

    对于下面的演示,我也更改了选择器(从 b2.find("tr th")b2.find("tr"),因为前者发现 ths 是 tr 的子代,而 ths 没有 tds 子代- 这是您稍后使用.children("td") 搜索的内容:

    b2 = $('#Auftragspositionen');
    b2.find("tr").children("td").each(function(i) {
      var tdWidth = $(this).width();
      alert(i + ' td width is ' + tdWidth);
    });
    table, tr, th, td { border: 1px solid black; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table id="Auftragspositionen" class="standardliste" summary="">
      <tr>
        <th id="Posart">Posart</th>
        <th id="Datum">Datum</th>
      </tr>
      <tr>
        <td headers="Posart">
          <div class="left noborder">001.00<br/>Z <br/>Zeit</div>
        </td>
        <td headers="Datum">
          <div class="middle noborder">12.03.2018</div>
        </td>
      </tr>
    </table>

    【讨论】:

    • 您好,acdcjunior,感谢您的回复,我看到了我的错误。现在它正在工作。但是这个脚本会找到每一个“td”,但是为了计算表格只需要找到第一行,或者第一行(tr)。是否可以仅更改第一行的脚本?
    • 试试b2.find("tr").children("th")是吗?
    • 嗨,acdcjunior,但这只是标题。我认为标题的宽度与数据行不同。
    • 哦,对不起,正确的是b2.find("tr:eq(0)").children("td")。它只会拾取第一行。
    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2013-04-26
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多