2016-02-12 87 views
1

我已閱讀其他有關.data().attr()的問題沒有任何答案對我有幫助。不能讓jquery.data()或.attr()工作都返回undefined

我有一個按鈕,每個按鈕都有自己的ID格式: player-*****其中*****是一個數字ID。

我也有一些隱藏的表單元素,我想:

  • 從表單元素
  • 閱讀值產生的參考我的div如'#draftBtn-*****'
  • 得到重視數據按鈕。
  • 對數據進行處理的東西....

我不能似乎得到重視我的DIV的數據,總是返回undefined。

.attr('player-data').data('player)都返回undefined。

我使用jQuery v1.12.0

樣品行從表:

<tr> 
    <td><span class="label label-primary">TE</span></td> 
    <td>Richard Rodgers</td> 
    <td><b>GB</b> @ ARI</td> 
    <td>8</td> 
    <td>19</td> 
    <td>5100</td> 
    <td> 
     <div id='draftBtn-633397' class='btn btn-sm btn-success draft-player' data-player='{ 
      "id" : 633397, 
      "player" : 16491, 
      "shortName" : "R.Rodgers", 
      "name" : "Richard Rodgers", 
      "team" : "GB", 
      "opponent" : "ARI", 
      "position" : "TE", 
      "salary" : 5100, 
      "lastGameFantasyPoints" : "5", 
      "projectedFantasyPoints" : "3", 
      "opponentRank" : "8", 
      "opponentPositionRank" : "19", 
      "status" : "Scrambled", 
      "statusCode" : "P", 
      "statusColor" : "green" 
     }'>+</div> 
    </td> 
</tr> 

我的javascript:

var squadPlayers = { 
    'qb': null, 
    'rb1': null, 
    'rb2': null, 
    'wr1': null, 
    'wr2': null, 
    'te': null, 
    'k': null, 
    'flex': null, 
    'def': null 
}; 

var getPosKeys = function(){ 
    var keys = []; 
    for (var key in squadPlayers) { 
     if (squadPlayers.hasOwnProperty(key)) { 
      keys.push(key); 
     } 
    } 
    return keys; 
} 

var initSquad = function(){ 
    var keys = getPosKeys(); 
    console.log(keys);  
    keys.forEach(function(element) { 
     var formRef = '#contestEntry_' + element; 
     console.log(formRef); 
     var playerID = $(formRef).val(); 
     console.log({'playerID': playerID}); // 633397 
     var btnRef = '#draftBtn-'+playerID; 
     console.log({'btnRef' : btnRef }); // '#draftBtn-633397' 
     var playerAttr = $(btnRef).attr('data-player'); 
     console.log(playerAttr); // undefined 
     var playerData = $(btnRef).data('player'); 
     console.log(playerData); // undefined 

     //do something with the data.....   
     //addPlayerToSquad($) 
    }, this); 
} 
+0

使用'dataset'本地屬性。在這種情況下,'$(selector).get(0).dataset.player' –

+1

不應該.attr('player-data')是.attr('數據播放器')? – peinearydevelopment

+0

@peinearydevelopment是的,在實際的代碼中,它是 –

回答

-4

自評(使用按鈕事件):

所以,而不是從表格行,我現在使用按鈕觸發的事件,一個簡單的測試將顯示所有工作得很好:

$(function() { 

    $(".btn").click(function() { 
     var tr = $(this).closest("tr").find("td:last div"), 
     json = tr.data("player"); 

    alert('ID: ' + json.id + '\nTeam: ' + json.team); 
}); 

}); 

活生生的例子:http://jsbin.com/kojunibixa/1/edit?html,js,output

附:我還是不明白將容易做什麼複雜化的洞理念......對不起。

+0

將很好解釋,以及當投票時... – balexandre

+0

我需要能夠使用$(this)我已附加到按鈕點擊的功能,因此將數據附加到並沒有多大幫助。 (不是我投票的人) –

+2

關於何處放置數據屬性的意見並沒有回答這個問題,對於_does_回答這個問題的答案稍微好一點,但其餘答案本質上是一個評論那就說「你的代碼是好的」,其中有很多問題已經存在,如果你想回答「你的代碼有效」,你應該投票結束,因爲這是「爲什麼代碼不工作」。 –