2

次のコード スニペットがあります。

マークアップ:

<tr name="tr3" id="tr3">
    <td>
        <input type="text" class="common_cls" name="dt[]" id="dt1"> 
    </td>
    <td>
        <input type="hidden" name="fn[]" id="fn1">
        <span id="sp1"><a href="#" id="ah1">choose file</a><span>
        <input type="file" name="fff[]" id="ff">
        <input type="text" style="display:none">
    </td>
</tr>';

ジャバスクリプト

$(document).on('click', '#add_row', function() {
    var row = $("table#DocTable tr:eq(3)");
    row.clone(true)
        .show()
        .find("a, input, span").each(function() {
            $(this)
                .val('')
                .attr('id', function(_, id) {
                    var newcnt = id + count;
                    return id + count;
                });
        })
        .end()
        .appendTo("table");
    count++;

私はこれを1年以上前に書きましたが、問題のビットについて支援を受けました.

.attr メソッドで呼び出される関数の最初の引数としてのアンダースコアの目的は何ですか?

その機能はどのように正確に機能しますか?id現在のすべてaのタグspaninputタグをインクリメントされた番号に置き換えるだけですか?

4

4 に答える 4

5

アンダースコアは通常、名前のない変数のプレースホルダーとして使用されます。基本的に、その変数を使用しない場合は、名前を探す必要がないので、代わりにアンダースコアを使用できます。

i18n アンダースコア関数またはunderscore.jsと混同しないでください。

PS : この慣行がどこから来たのかはわかりませんが、アンダースコアが何かに使用されているのを初めて見たのは、Prolog (_実際には「任意の値」のようなものを意味します) を学んでいたときでした。

于 2013-04-23T20:49:54.470 に答える
4

この場合、現在の要素のインデックスが に格納され_ます。その関数が行うのは、各要素の属性をその要素の id + カウントで更新することだけです。代わりに名前を付けた場合、indexまたはiインデックスが含まれていると推測できた可能性があります..

于 2013-04-23T20:51:20.467 に答える
0

まあ、それは著者だけが答えることができます。関数の_最初の引数の名前があります。

私が見ることができるコードに基づいて、_変数は関数でまったく使用されていないため、この関数では最初の引数は必要ないため_、ランダムではなく で「スタブ化」されていると推測しています名前。

于 2013-04-23T20:51:29.243 に答える