代码之家  ›  专栏  ›  技术社区  ›  Christian Oudard

获取jquery中的列表元素内容数组

  •  97
  • Christian Oudard  · 技术社区  · 16 年前

    我有这样的结构:

    <ul>
      <li>text1</li>
      <li>text2</li>
      <li>text3</li>
    </ul>
    

    如何使用javascript或jquery将文本作为数组获取?

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

    之后我的计划是把它组装成一个字符串,可能使用 .join(', ') ,并按如下格式获取:

    '"text1", "text2", "text3"'
    
    5 回复  |  直到 8 年前
        1
  •  134
  •   Shog9    16 年前
    var optionTexts = [];
    $("ul li").each(function() { optionTexts.push($(this).text()) });
    

    …应该有技巧。为了得到你想要的最终结果, join() 再加上一些连接将很好地完成:

    var quotedCSV = '"' + optionTexts.join('", "') + '"';
    
        2
  •  68
  •   community wiki 5 revs, 4 users 47% AlexanderN    10 年前

    无冗余中间阵列:

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

    参见JSFIDLE demo

        3
  •  14
  •   Cybolic    13 年前

    Kimstik很亲近,但不是很亲近。

    以下是如何在方便的一行程序中执行此操作:

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

    以下是jquery的map函数的完整文档,非常方便: http://api.jquery.com/jQuery.map/

    完全回答一下,下面是您想要的完整功能:

    $.map( $('li'), function (element) { return $(element).text() }).join(', ');
    
        4
  •  13
  •   roenving    16 年前

    在干净的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);
    
        5
  •  7
  •   Dave Ward    16 年前
    var arr = new Array();
    
    $('li').each(function() { 
      arr.push(this.innerHTML); 
    })