1

さて、約束どおり、これが本当の取引です。最初のサンプルhtmlです。

<li data-foo="bar">
    <span id="a"></span>
    <ul>
        <li>
            <span id="1"></span>
            <ul>
                <li>
                    <span id="b"></span>
                </li>
            </ul>   
        </li>

        <li>
            <span id="2"></span>
            <ul>
                <li>
                    <span id="c"></span>
                </li>
            </ul>   
        </li>

    </ul>

</li>

<li data-foo="bar">
    <span id="d"></span>
    <ul>
        <li>
            <span id="3"></span>
            <ul>
                <li>
                    <span id="e"></span>
                </li>
            </ul>   
        </li>

        <li>
            <span id="4"></span>
            <ul>
                <li>
                    <span id="f"></span>
                </li>
            </ul>   
        </li>

    </ul>

</li>

ウィンドウに「12」をポップアップさせ、次に「34」をポップアップさせたい...だから、ネストされた関数の試みは次のとおりです。

<script>
    var poptext = "";

    $('li[data-foo=bar]').each(

    function () {

        $(this li span).each(function () {
            poptext = poptext + $(this).attr("id");
        }

        alert(poptext);
        poptext = "";

        );

    }

    );
</script>

これは機能していないようです。Jquery が複数の「this」キーワードで混乱したのではないでしょうか? また、これらのスパンのセレクターに最初から問題がある可能性もあります。

みんなありがとう!

4

2 に答える 2

1

コードに構文エラーがあり、ロジックがオフになっている$(this li span)必要が$('li span', this)あります。文字 ID でスパンを除外していません。

于 2012-08-09T19:50:26.803 に答える
1

直接の子孫セレクターを探していると思います:>

次のように使用します。

$('li[data-foo=bar]').each(function () {
     var poptext = "";        
     $(this).find('> ul > li > span').each(function () {
         poptext = poptext + $(this).attr("id");
     });
     alert(poptext);
});

左側の前の式の直接の子であるノードのみを選択します。

より冗長ですが、おそらく読みやすいバージョンは次のようになります。

$(this).children('ul').children('li').children('span') // selects the same 

ここで実際に見てください:http://jsfiddle.net/xYgJg/

于 2012-08-09T19:55:54.803 に答える