0

トリガーされると、テーブルの 3 番目 (一番下) の行が複製されます。CSS では、この行 (#tr3) は次のように設定されています。これが私がクローンしているテーブルの行です:

<tr name="tr3" id="tr3">
    <td><input type="text" name="dt1" id="dt1"></td>
    <td><input type="text" name="fn1" id="fn1"></td>
    <td><a href="#" name="change1" id="change1">change</a></td>
    <td><a href="#" name="del1" id="del1">delete</a></td>
</tr>

これは、行を複製するための JQuery コードです。残念ながら私のものではないので、すべてを理解することはできません。

$("table tr:nth-child(4)").clone().find("input").each(function() {
    $(this).val('').attr('id', function(_, id) {
    return id + count;
});

具体的には、2 行目の関数はどのように機能しますか?アンダースコアとは何ですか?

しかし、ここに来たのはここです。どうやって:

  1. 複製された行のスタイルを display:block に変更し、
  2. 複製された行のアンカー タグの ID を更新します。入力フィールドの ID は更新されます (例: fn1 => fn11、fn12、fn13、fn14 など)。

ありがとうございました。

4

2 に答える 2

2

わかりやすくするために:

var $clone = $("table tr:nth-child(4)").clone();
  1. display:block複製された行のスタイルを変更するには?

    $clone.show();
    
  2. 複製された行のアンカー タグの ID を更新する方法。

    $clone.find("a, input").each(function() {
      $(this).val('').attr('id', function(_, id) {
        return id + count;
      });
    });
    
  3. 上記の jQuery コードで、2 行目の関数はどのように機能しますか?アンダースコアは何ですか?

    アンダースコア ( _) は有効なECMAScript の識別子名idであり、2 番目の引数 ( .)を取得できるようにするためのプレースホルダーとしてのみ使用されます。

そして、すべてをまとめて(テストされていません。)

$("table tr:nth-child(4)")
  .clone()
  .show()
  .find("a, input").each(function() {
    $(this).val('').attr('id', function(_, id) {
      return id + count;
    });
  });
于 2012-09-10T23:11:58.267 に答える
1
  1. クローンされた行に実際に単独でアクセスすることはありません。たとえば、何かに割り当てる必要があります。

    $clonedRow = $("table ...").clone();
    

    その後、他のすべてのメソッドを実行し、最終的$clonedRowに DOMに追加できます。

    $clonedRow.insertAfter("table ...")
    
  2. おそらく正規表現を使用して、何らかの方法で最後の桁を取り除く必要があります。

    return id.replace(/\d+$/, '') + count;
    
  3. _単なるプレースホルダーです。使用されていないため、コードの作成者は、パラメーターを取得するために宣言で何かが必要なため、わかりやすい変数名を選択しましたid

于 2012-09-10T23:06:03.933 に答える