0
<script type="text/javascript">
    $(document).ready(function () {
        $("tr.item").each(function () {
            var weight = $(this).children('td.Weight').text();
            var unit = "Kg";
            $(".Weight").text(weight + unit);

            });


    });
</script>
 html code...
  @foreach (var item in Model) {
   <tr class="item">
    <td>
        @Html.DisplayFor(modelItem => item.OrderId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.CustomerId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.OrderDate)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.OrderQty)
    </td>
    <td class="Weight">
        @Html.DisplayFor(ModelItem => item.TotalWeight, new { id="TotalWeight"})
    </td>
  </tr>

値は、たとえば、5000Kg、次に 5000KgKg、次に 5000KgKgKg などと連結し続けます。現在の値を考慮することができません。コードはすべての行を考慮します。

4

2 に答える 2

2

変化する

$(".Weight").text(weight + unit);

$(".Weight", this).text(weight + unit);

.Weight現在の行のセルのみが変更されるようにします。

コメントに続く予言:

  • ここでセレクターをキャッシュしても意味がありません。目立った効果はなく、コードの読み取りと保守が難しくなります。
  • を使用するchildrenと遅くなりますが、これはあまり重要ではありません。重要なのは、 usingがクラスのセマンティックな使用から逸脱することです。これにより、コードは要素が直接の子であり、たとえば a の aではないchildrenという事実に依存するようになります。これは、一般的によりも好むべき理由とまったく同じ理由です。.Weightspantdclosestparent
于 2013-07-30T09:10:55.797 に答える
1

at で使用されるセレクターは$(".Weight").text(weight + unit);、現在の要素内の要素だけでなく、クラス "Weight" を持つすべての要素を選択しますtr。ただし、使用して正しい要素を見つけることができる$(this).children("td.Weight")ので、その要素を再利用してください。

$("tr.item").each(function () {
  var $weight = $(this).children(".weight"),
      weight = $weight.text(),
      unit = "Kg";

  $weight.text(weight + unit);
});

ところで: 短いセレクターを使用することをお勧めします。この場合.Weightは、クラス名と一貫性を保つために十分です ("Weight" を小文字にする)。

于 2013-07-30T09:16:50.817 に答える