Skip to main content

Get an array of list element contents in jQuery



I have a structure like this:







<ul>

<li>text1</li>

<li>text2</li>

<li>text3</li>

</ul>







How do I use javascript or jQuery to get the text as an array?







['text1', 'text2', 'text3']







My plan after this is to assemble it into a string, probably using .join(', ') , and get it in a format like this:







'"text1", "text2", "text3"'





Source: Tips4all

Comments

  1. Without redundant intermediate arrays:

    arr = $('li').map(function(el, i) {
    return $(el).text();
    });


    See jsfiddle demo

    ReplyDelete
  2. And in clean javascript:

    var texts = [], lis = document.getElementsByTagName("li");
    for(var i=0, im=lis.length; im>i; i++)
    texts.push(lis[i].firstChild.nodeValue);

    alert(texts);

    ReplyDelete
  3. var arr = new Array();

    $('li').each(function() {
    arr.push(this.innerHTML);
    })

    ReplyDelete
  4. kimstik was close, but not quite.

    Here's how to do it in a convenient one-liner:

    $.map( $('li'), function (element) { return $(element).text() });


    Here's the full documentation for jQuery's map function, it's quite handy: http://api.jquery.com/jQuery.map/

    Just to answer fully, here's the complete functionality you were looking for:

    $.map( $('li'), function (element) { return $(element).text() }).join(', ');

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.