2

データベースから解析されるJSON配列があります。

$.getJSON(… ,

データは繰り返さ$.eachれ、名前でtable1に配置されます。

function(geojson) {
    $.each(geojson.features, function(i, feature) {
        var id = feature.properties.id;
        var name = feature.properties.name;
        var otherDetails = feature.properties.otherDetails;

        // Populate table1 with clickable links
        $("#table1 table").append('<tr><td><a href="#" onclick="['+id+']; return false;">'+name+'</a></td></tr>')
            //populate table2 with name
            .click(function(){
                $("#table2 table").append('<tr><td><a">'+name+' '+otherDetails+'</a></td></tr>')
        })
    });
});

これはすべて素晴らしいです、ちょうど私が欲しいものです。テーブル内の各機能「name」はクリック可能です。クリックすると、別のテーブル(table2)に1つのレコードのみの「name」と「otherDetails」が入力されます。上記のコードはほぼそこに到達しますが、クリックされた機能の名前をtable2に入力するつもりで、table2にtable1のコピーに近い機能の完全な配列を入力します。これは、まだ内部にあるためだと思います$.each。ネストされた追加の.each反復を停止するにはどうすればよいですか?前もって感謝します。

4

2 に答える 2

1

clickイベントハンドラーはそのレベルで適用されているのでtable、繰り返します。次のように、行に適用してみてください。

 // Populate table1 with clickable links
 var newRow = $('<tr><td><a href="#" onclick="['+id+']; return false;">'+name+'</a></td></tr>');
 $("#table1 table").append(newRow);
 $(newRow).click(function(){
     $("#table2 table").append('<tr><td><a">'+name+' '+otherDetails+'</a></td></tr>')
 });
于 2012-10-13T19:12:45.953 に答える
0

table1 の行にクリック ハンドラーを追加します。クリックすると、テーブル 2 の新しい行に配置する名前を引き出します。

$('#table1 table').on('click', 'tr', function()
{
    var name = $(this).find('a').text();
    $('#table2 table').append('<tr><td><a">' + name + '</a></td></tr>');
});

データを維持する別の方法は、データ属性を使用することです。これにより、otherinfo データも使用できるようになります。

于 2012-10-13T19:12:04.817 に答える