使用jquery获取UL列表内容

时间:2012-05-25 20:46:29

标签: jquery html html-lists

我需要从UL列表中获取内容,然后才能使用它来发送电子邮件。但我坚持在jquery中获取ul列表。我搜索过并找到了以下内容:

$(document).ready(function(){
    $("#send").click(function() { //When trigger is clicked...
            var optionTexts = [];
            $("#thelist").each(function() { optionTexts.push($(this).text()) });
            var text = '"' + optionTexts.join('"<br/> "') + '"';

            $("#result").append(text);

        });
    });

但这会返回页面内的所有内容:S 这是我的ul列表:

<ul id="thelist">
  <li style="height: 65px; display: list-item; ">
    <ul>
      <li class="botHeader">
        "Evelin dice"
                <span>14:37:52</span>
      </li>
      <li class="botMsg">
        "Hola, bienvenido"
      </li>
    <ul>
  </li>
  <li style="height: 26px; display: list-item; ">
    <ul>
      <li class="userHeader">
        "Usted dice"
                <span>14:37:59</span>
      </li>
      <li class="userMsg">
        "Hola como estas"
      </li>
    <ul>
  </li>
  <li style="height: 39px; display: list-item; ">
    <ul>
      <li class="botHeader">
        "Evelin dice"
                <span>14:37:59</span>
      </li>
      <li class="botMsg">
        "Gracias por preguntar, todo bien"
      </li>
    <ul>
  </li>
</ul>

<a href="#" id="send">enviar</a>
<div id="result">

</div>

3 个答案:

答案 0 :(得分:4)

这应该一次完成,并且没有任何临时变量:

$('#result').append(
    $('#thelist').find('li').filter(function() {
        return $(this).find('ul').length === 0;
    }).map(function(i, e) {
        return $(this).text();
    }).get().join('<br/>')
);

您必须只考虑没有任何<li>后代的<ul>元素。

http://jsfiddle.net/alnitak/JVS7d/

的工作演示

答案 1 :(得分:1)

首先,您的标记无效。您错过了内部列表中的结束</ul>。 其次,您只需将li添加到$.each(...)功能的选择器中。

$(document).ready(function(){
    $("#send").click(function() { //When trigger is clicked...
        var optionTexts = [];
        $("#thelist li").each(function() { optionTexts.push($(this).text()) });
        var text = '"' + optionTexts.join('"<br/> "') + '"';

        $("#result").append(text);
    });
});   

答案 2 :(得分:0)

我认为您应该将$("#thelist").each(function...更改为$("#thelist ul li").each(function...

相关问题