【发布时间】:2016-05-23 16:23:14
【问题描述】:
我已阅读有关 .data() 和 .attr() 的其他问题,但没有一个答案对我有帮助。
我有一个带有一些按钮的表格,每个按钮都有自己的 id,格式如下:
player-***** 其中***** 是一个数字ID。
我还有一些隐藏的表单元素,我正在尝试:
- 从表单元素中读取值
- 生成对我的 div 的引用,例如
'#draftBtn-*****' - 获取附加到按钮的数据。
- 对数据做点什么......
我似乎无法将数据附加到我的 div,总是返回 undefined。
.attr('player-data') 或 .data('player) 都返回未定义。
我正在使用 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);
}
【问题讨论】:
-
使用
dataset原生属性。在这种情况下将是$(selector).get(0).dataset.player -
不应该 .attr('player-data') 是 .attr('data-player') 吗?
-
@peinearydevelopment 是的,在更下方的实际代码中是
-
你也可以登录
$(btnRef).length- 确保它实际上首先找到了元素?您确定该元素存在并在此代码运行时填充? -
Your code works。鉴于
playerID确实是633397,并且当代码执行时,您粘贴的HTML 在DOM 中可用,attr或data都不会产生未定义的结果。因此,无论是什么导致您的代码记录未定义,它是您粘贴的代码之外的东西,或者没有满足上述先决条件(表是否由 AJAX 调用填充,并且您没有使用回调?)
标签: javascript jquery html attr