我需要从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>
答案 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>
元素。
答案 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...