2017-04-10 12 views
0

私はtd要素をクリックして行を選択してIDを取得し、URLにそれを配置したい次のコードtd要素から特定のIDを選択するにはどうすればよいですか?

type: 'GET', 
        dataType: 'json', 
        url: "http://api.football-data.org/v1/competitions/426/teams", 

        processData: true, 
        success: function (data, status) { 
         var trHTML = ''; 
         $.each(data.teams, function (key, item) { 
          var id = item._links.self.href; 
          var indexOfLastBackSlash = id.lastIndexOf("/") + 1; 
          id = id.substring(indexOfLastBackSlash); 
          //$('<option>', { text: item.TeamName, id: item.ID }).appendTo('#lstTeams'); 
          var $row = $("<tr>", { class: "info" }); 
          $row.append($("<td>").html(item.name)); 
          $row.append($("<td>").html(item.code)); 
          $row.append($("<td>").html(item.shortName)); 
          $row.append($("<td>").html(item.squadMarketValue)); 
          $row.append($("<td>").html(item.crestURL)); 
          $row.append($("<td>").html(id)); 
          $row.appendTo($('#teamsTable')); 

でjqueryのを使用して、APIからデータを引っ張っています。私はこれを試しました

$("#teamsTable").on('click', 'td', (function() { 
           //var id = $(this).attr("id"); 
           //location.reload(); 
           $.ajax({ 
            type: 'GET', 
            dataType: 'jsonp', 
            crossDomain: true, 
            url: "http://api.football-data.org/v1/teams/" + id + "/fixtures", 

しかし、それはテーブルからすべてのIDを選択するようです。いずれかのIDだけを取得する方法の任意の提案?

+0

'$(this).closest( 'tr')'は最も近い行を取得します。 '.parent()'もここで動作します。より汎用性が高いので、 '.closest()'が好きです。基本的には、 'tr'が見つかるまで(DOMツリーの上に)検索を開始します。反対側は '.find(...)'であり、これは下向きに(ネストされたオブジェクトに)検索されます。 – nurdyguy

+0

あなたのAPI呼び出し部分では、TRやTDにIDを割り当てないようです。私はそれが全体の行に適用される場合は、TRにIDを置くことをお勧めします。 ( '$ row.prop( 'id'、id);'のようなもの) – James

答えて

0

あなたが

var id = $(this).closest('tr').attr('id'); 

にできるはずです

var id = $(this).attr('id'); 

を持っては、例えばthis fiddle

編集を参照してください。コメントに@James'のポイントに。

var $row = $("<tr>", { class: "info" }).prop('id', id); 
関連する問題