1

如何遍历每个 a href 元素,然后从 div Foo 开始的 href 获取文本。

基本上我想遍历值 Hello、World、Acc、Sale 等。

<div id="Foo">
   <div class="Moo">
      <ul>
         <li>
            <a href="http://www.test.com/b5">Hello</a>
         </li>
         <li>
            <a href="http://www.test.com/b6">World</a>
         </li>
         <li>
            <a href="http://www.test.com/b7">Acc</a>
         </li>
         <li>
            <a href="http://www.test.com/b8">Sale</a>
         </li>
      </ul>
   </div>
</div>

啊啊啊,这种语言让我发疯了。这怎么行不通?我基本上是指着对象说循环遍历每个 A。

$('#Foo').find('.Moo ul li').find('a').each(function(){
   alert($(this).text);
});    

这也不起作用。

$('#Foo.Moo ul li a').each(function(){
   alert($(this).text);
});    

也不是这样,他们只是不断返回 javascript 而不是 a 标签的值。

('#Foo .Moo ul li a').each(function(){  
   alert($(this).text);
});  
4

3 回答 3

3

试试喜欢

$("#Foo .Moo ul li a").each(function(){
     alert($(this).text());
});

从您的代码中它可能会喜欢

$('#Foo').find('.Moo ul li').find('a').each(function(){
   alert($(this).text());
});    

就像.text()不喜欢.text你的html一样

<div id="Foo">
<div class="Moo">
    <ul>
        <li>
        <a href="http://www.test.com/b5">Hello</a>
        <ul>                
            <li>
            <a href="http://www.test.com/b6">World</a>
            </li>
            <ul>
                <li>
                <a href="http://www.test.com/b7">Acc</a>
                </li>
                <li>
                <a href="http://www.test.com/b8">Sale</a>
                </li>
            </ul>
           </ul>
           </li>
         </ul>
        </div>
    </div>
于 2013-07-09T05:14:22.047 回答
1

您的 html 无效

<div id="Foo">
    <div class="Moo">
        <ul>
            <li>
            <a href="http://www.test.com/b5">Hello</a>
            <ul>
                </li>
                <li>
                <a href="http://www.test.com/b6">World</a>
                <ul>
                    </li>
                    <li>
                    <a href="http://www.test.com/b7">Acc</a>
                    </li>
                    <li>
                    <a href="http://www.test.com/b8">Sale</a>
                    </li>
                </ul>
            </div>
        </div>

这可能是原因。

修复它,然后重新询问。

那么你可以这样做:

$('#Foo .Moo ul li a').each(function(){
   alert($(this).text());
}); 
于 2013-07-09T05:15:46.573 回答
0

你的 HTML 无效,所以这不起作用。去掉<ul>中间不需要的:

<div id="Foo">
    <div class="Moo">
        <ul>
            <li>
<a href="http://www.test.com/b5">Hello</a>

            </li>
            <li>
<a href="http://www.test.com/b6">World</a>

            </li>
            <li>
<a href="http://www.test.com/b7">Acc</a>

            </li>
            <li>
<a href="http://www.test.com/b8">Sale</a>

            </li>
        </ul>
    </div>
</div>

然后,您可以使用map()迭代<a>并获取文本,将其存储在数组中。

var aText = $("#Foo a").map(function () {
    return this.innerHTML;
}).get();
alert(JSON.stringify(aText)); //not needed. You could access that text like this : aText[i] where i = 0|1|2

演示:http: //jsfiddle.net/hungerpain/WG2Hg/

于 2013-07-09T05:24:38.073 回答