我有以下html:
<div class="mainmenu">
<ul class="blue">
<li class=""><a href="tst/" id="a1_up"><span class="all">tst1</span></a></li>
<li class=""><a href="tst1/" id="a2_up"><span class="all">tst2</span></a></li>
<li class=""><a href="tst3/" id="a3_up"><span class="all">tst3</span></a></li>
<li class=""><a href="tst4/" id="a4_up"><span class="all">tst3</span></a></li>
<li class=""><a href="tst5/" id="a5_up"><span class="all">tst4</span></a></li>
<li class=""><a href="tst6/" id="a6_up"><span class="all">tst5</span></a></li>
<li class=""><a href="tst7/" id="a7_up"><span class="all">tst6</span></a></li>
</ul>
</div>
我需要收集这部分<span class="all">tst6</span>
的所有跨度值我在jsbin上试过这个:
$(document).ready(function() {
$(".mainmenu ul li > span").each(function() {
alert($(this).val());
});
});
但没有任何反应。它上传到这里:
实时编辑:
答案 0 :(得分:2)
试试这个:工作演示 http://jsfiddle.net/mHfUs/5/
$(document).ready(function() {
$(".mainmenu > ul > li > span").each(function() {
alert($(this).text());
});
});
P.S。 jsfiddle表现得很有趣,我准备了演示:)
a
介于li
和span
之间,您可以在上面的演示中看到:&lt;这将工作&gt;
$(document).ready(function() {
alert('f');
$("div.mainmenu ul li a span").each(function() {
alert($(this).text());
});
});
答案 1 :(得分:2)
你的选择器是完全错误的:
">"
表示direct child
,span
不是li
的直接孩子,a
是。
将其重写为.mainmenu ul li span
,或者更好,使用更短的选择器,例如:
$('.mainmenu span.all')
或
$('.blue span')
答案 2 :(得分:1)
您的span元素没有值(val()
)。
尝试获取text()
:
alert($(this).text());
答案 3 :(得分:0)
您可以使用.map来获得结果。 (span没有值,你应该使用.text()
来获取innerHtml文本)
var values = $(".mainmenu ul li > span").map(function() {
return $(this).text();
});
答案 4 :(得分:0)
1-您的span
元素不是li
元素的直接后代,因此选择器
(".mainmenu ul li > span")
将不匹配任何元素。写而不是$(".mainmenu li span")
2-而不是val()
方法使用text()
方法
答案 5 :(得分:0)
以下是使用jquery选择正确选择器并在其上应用适当属性的解决方案。
$(document).ready(function() {
var result = '';
$(".mainmenu ul li span.all").each(function() {
result += '<div><a href="#">' + $(this).text() + '</a></div>';
});
$('#result').html(result);
$("#result").addClass("output")
});
上的解决方案创建了一个bin