2

ボタンをクリックすると多くのことを行い、いくつかの要素の名前を変更するスクリプトがあるため、最初に最初のスクリプトを使用すると、機能する場合と機能しない場合があるため、2番目のスクリプトに変更すると常に完全に機能しますが、質問。この 2 つのスクリプトは同じですか? 違いは何ですか。すべてのスクリプトではなく、最初のスクリプトを 2 番目のスクリプトに置き換えるだけです。

これは最初のスクリプトです

$(CloneTarget).find(':input[name="' + MainName + '"]').attr('name', NewSelectName);

そして2つ目:

$(CloneTarget).find(':input').each(function () {
    if ($(this).attr('name') == MainName) {
        $(this).attr('name', NewSelectName);
    }
});

最初のもののどこに問題がありますか?

編集

また、私はこれを使用します:

    $(CloneTarget).find(':input[id="' + MainId + '"]').attr('id', NewSelectId);

そして、すべてがうまくMainNameいきました。私はここで本当に混乱しています。MainIdMainName = Model.Phones[0]MainId = Model_Phones[0].

4

1 に答える 1

7

はい、違いがあります。2番目のコードスニペットは、要素のname属性との値の間で文字列比較を実行しますMainName。1つ目は、の値をAttributeEqualsセレクターに直接挿入MainNameます

したがって、次のMainNameものが含まれている場合、最初のスニペットは失敗します。

  • 一重引用符'
  • 二重引用符"
  • [またはなどのセレクターでエスケープする必要がある文字\
于 2012-05-17T06:07:24.930 に答える