I'm trying to get data value from an <li data-nid="1"> tag. The <li> list is generated from an Ajax query response.
$.each(data.notifications.detail,function(index, element){
$('#notifications_list').append('<li id="element" data-nid ='+element.id+'><a>'+element.texte+'</a></li>');
});
to recover value, I tried the following method :
var array = new Array();
  $( "#element").each(function() {
        var id = $( this ).data( "nid" );
        array.push(id);
   });
But i'm always getting just one element, and its always the first one. So maybe someone clarify me the situation.
Firstly you cannot have multiple elements with the same id, hence the point of using an each() on an id selector is completely redundant. You should change the id to a class.
To create the array of values from the appended elements you can simply use map(). Try this:
$.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();
Also note that you could create the array of values in the same each() loop as you append the new li elements, like this:
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>');
});
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With