正确使用jquery选择器

正确使用jquery选择器,jquery,Jquery,我有以下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/" i

我有以下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元素没有值(
val()

尝试获取
text()

alert($(this).text());

试试这个:工作演示

p、 美国JSFIDLE的表演很有趣,否则我已经准备好了演示
:)

a
介于
li
span
之间,您可以在上面的演示中看到:

$(document).ready(function() {
    alert('f');
    $("div.mainmenu ul li a span").each(function() {
        alert($(this).text());
    });
});​
你可以用它来得到结果。(span没有值,应使用
.text()
获取内部HTML文本)


您的选择器完全错误:

“>”
表示
直接子项
,并且
span
不是
li
的直接子项,
a

将其重写为
.main菜单ul li span
,或者更好地使用更短的选择器,如:

$('.mainmenu span.all')


1-您的
span
元素不是
li
元素的直接后代,因此选择器

(".mainmenu ul li > span")
不匹配任何元素。改为写入
$(“.main菜单li span”)


2-使用
text()
method

代替
val()
method,以下是使用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")
$(文档).ready(函数(){
var结果=“”;
$(“.main菜单ul li span.all”)。每个(函数(){
结果+='';
});
$('#result').html(result);
$(“#结果”).addClass(“输出”)
}))


我已经用解决方案创建了一个bin,你想收集哪个值?@GandalfStormCrow嘿,你的
li
span
之间似乎有一个
标记,这使得选择器错误,我第一次使用jsbin,因此需要时间,
:)
@GandalfStormCrow工作演示:希望这有帮助
$('.mainmenu span.all')
$('.blue span')
(".mainmenu ul li > span")
$(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")