2016-03-22 24 views
0

私は自分自身の中でテーブルを再現したいと思います。しかし、それは動作していません。私がパラメータを渡すと、それは間違ったり、より良くなることはありません。各jqueryにそれぞれ反復する

$('table tr').each(function() { 
    var tr = $(this) 
    var nivel = parseInt(tr.find('td:eq(1)').text()); 
    var item = parseInt(tr.find('td:eq(0)').text()); 
    if (nivel > 3) { 
     tr.closest('tr').css({ "display": "none" }); 
    } 
    $('table tr').each(function (item) { 
     var itemPai = parseInt($(this).find('td:eq(2)').text()); 
     if (item == itemPai) { 
      console.log("Tem filhos"); 
      $(this).closest('tr').find('a.toggler').css({ "display": "normal" }); 
     } else { 
      $(this).closest('tr').find('a.toggler').css({ "display": "" }); 
     } 
    }); 
}); 
+0

? – guyaloni

+0

例を挙げることはできますか? – Itamar

+0

'tr(cl) '(cl)'と同じです)' tr.closest( 'tr') 'は機能的には' tr ' – Jocie

答えて

0

私はあなたが達成しようとしているのか理解していない、あなたがテーブルに持っていないデータの種類を知ることが役に立つかもしれません。

アクセスするセルの値が数字であることを確認できますか? 100%でない場合は、parseIntを使用する前にtypeofを使用してください。

とにかく、2番目のループでは、外部ループの変数itemが使用できます。関数呼び出しでパラメータとして宣言すると、外側の値が上書きされます。

何をしたいが、外側と内側のループの間の値を比較する場合には、単に内部反復の関数呼び出しからパラメータを削除:

$('table tr').each(function() { 
    var tr = $(this) 
    var nivel = parseInt(tr.find('td:eq(1)').text()); 
    var item = parseInt(tr.find('td:eq(0)').text()); 
    if (nivel > 3) { 
    tr.closest('tr').css({ "display": "none" }); 
    } 
    $('table tr').each(function() { 
    var itemPai = parseInt($(this).find('td:eq(2)').text()); 
    if (item == itemPai) { 
     console.log("Tem filhos"); 
     $(this).closest('tr').find('a.toggler').css({ "display": "normal" }); 
    } else { 
     $(this).closest('tr').find('a.toggler').css({ "display": "" }); 
    } 
    }); 
}); 
正確に何をしようとする
関連する問題