我正在尝试从<li data-nid="1">
标记获取数据值。 <li>
列表是根据Ajax
查询响应生成的。
$.each(data.notifications.detail,function(index, element){
$('#notifications_list').append('<li id="element" data-nid ='+element.id+'><a>'+element.texte+'</a></li>');
});
要恢复价值,我尝试了以下方法:
var array = new Array();
$( "#element").each(function() {
var id = $( this ).data( "nid" );
array.push(id);
});
但我总是得到一个元素,而它总是第一个元素。所以也许有人会向我澄清情况。
答案 0 :(得分:2)
首先,你不能有多个具有相同each()
的元素,因此在id选择器上使用id
是完全多余的。您应该将class
更改为map()
。
要从附加元素创建值数组,您只需使用$.each(data.notifications.detail, function(index, element){
$('#notifications_list').append('<li class="element" data-nid="' + element.id + '"><a>' + element.texte + '</a></li>');
});
var array = $(".element").map(function() {
return $(this).data("nid");
}).get();
即可。试试这个:
each()
另请注意,您可以在追加新li
元素的同一var array = [];
$.each(data.notifications.detail, function(index, element){
array.push(element.id);
$('#notifications_list').append('<li class="element" data-nid="' + element.id + '"><a>' + element.texte + '</a></li>');
});
循环中创建值数组,如下所示:
{{1}}
答案 1 :(得分:0)
一个html&#34; id&#34;必须是独一无二的
您可以使用父<ul>
进行过滤,然后使用children()
或filter('li')
$("#notification_list").children().each(function() {
var id = $( this ).data( "nid" );
array.push(id);
});
答案 2 :(得分:0)
由于class
是唯一的,因此请使用 var xScale = d3.scale.ordinal().rangeRoundBands([0, width], .1);
var yScale = d3.scale.linear().range([height, 0]);
var hAxis = d3.svg.axis().scale(xScale).orient('bottom').tickFormat(d3.time.format("%Y-%m-%d"));
,它会正常工作。