0
<html>
<head>
<script>
function A(){

  var count=0;
   var A=0;
   var C=0;

   $('.JRow').each(function(){
     count++;

     alert(count);


      $this.$('.BtnSet').each(function(){
        A++;
        alert(A);

      $this.$('.Child').each(function(){
        C++;
        alert(C);

       if(('$(this) input:text[name="A[]"]').length){

       alert('$(this) input:text[name="A[]"]').length);
       }

         });

         });
});

    return false;
}
</script>
</head>
<body>
<form onsubmit="return A()">
    <div class="row JRow">
     <input type="text" name="B[]"></input>
     <input type="text" name="B[]"></input>
        <div class="BtnSet">
            <div class="Child">

            </div>

            <div class="Child">
                <input type="text" name="A[]"></input>
                <input type="text" name="A[]"></input>
                <input type="text" name="A[]"></input>
            </div>

        </div>
    </div>
<div class="JRow"></div>
    <input type="submit" value="Submit"></input>
</form>
</body>
</html>

こんにちは、私はこれを通過する必要があります。JRow クラスから開始する場合、最初の JRow は BtnSet クラスがあるかどうかを検索する必要があります。もしそうなら、その BtnSet クラスはそれが子クラスを持っているかどうかを検索する必要があります。私の例では、Btnset の最初のセットには 2 つの Child クラスがあるため、それぞれのクラスを調べて、テキスト ボックスの長さである最終出力を取得する必要があります。同様に、すべてのノードに移動する必要があります。2番目のJRowに関しては、何もありません。私の本当の質問はとても複雑なので、それを通して簡単な質問をしました。私は何日もこれに苦労しているので、誰かがこれを助けてくれたら教えてください。

4

2 に答える 2

1

find()機能をお探しですか?これにより、選択した要素の一致する子孫が見つかります。

の代わりに$this.$('.BtnSet')、おそらく次のものが必要です。

$(this).find( '.BtnSet')

中間変数も使用してみてください。そうすれば、コードをログに記録したり、デバッグしたりできます。人々が何が起こっているのかを気にせず、なぜデバッグできないのか、コードのどこが間違っているのかを突き止められないのか不思議に思うのは驚くべきことです。

原則: 中間ステップをログに記録したり検査したりできず、全体的な動作に複数のステップが関与している場合、全体的な動作の失敗を効率的にデバッグすることはできません。

通常は失敗する、非常に効果のない試行錯誤に陥ります。

の代わりにif(('$(this) input:text[name="A[]"]').length){、次のようにデバッグしてみてください。

var inputsAll = $(this).find( 'input');  // just for learning & debugging
var inputsA = $(this).find( 'input:text[name="A[]"]');
console.log('  found inputs', inputsAll, inputsA);
if (inputsA.length) {

$(this) をセレクター内に置くことはできません。セレクターはテキスト式であり、jQuery を呼び出して DOM 要素を選択/ラップすることは Javascript 関数呼び出しです。それらを魔法のように相互にマングルすることはできません。

于 2013-09-21T01:37:20.490 に答える