1

以下のコードでは、赤、青、緑、および茶色の行が表示されることを期待していますが、nextUntil 引数が無視されているかのように、赤を除くすべての行が非表示になっているように見えます。手がかりはありますか?ありがとう。

いくつかの調査の後、私は両方を試しました

$("#firstrow").nextUntil('span[class="hues"]').hide();

$("#firstrow").nextUntil('span:not(.colors)').hide();   

HTML:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"/>
        <script>
            $(document).ready(function() {
                $("#firstrow").nextUntil('span[class="hues"]').hide();
                //$("#firstrow").nextUntil('span:not(.colors)').hide();            
            });
        </script>
    </head>
    <body>
        <table id="colortable">
            <tr id="firstrow">
                <span class="colors">Red</span>
            </tr>
            <tr>
                <span class="colors">Orange</span>
            </tr>
            <tr>
                <span class="hues">Blue</span>
            </tr>
            <tr>
                <span class="shades">Green</span>
            </tr>
            <tr>
                <span class="colors">Brown</span>
            </tr>
        </table>
    </body>
</html>
4

1 に答える 1

1

マークアップが無効です。要素には子要素trのみを含める必要があります。td

<table id="colortable">
    <tbody>
        <tr id="firstrow">
            <td> 
                <span class="colors">Red</span>
            </td>
        </tr>
        ...
    </tbody>
</table>

スパン要素は、選択した要素の兄弟ではありません。選択した要素の次の兄弟要素のみをフィルタリングします。その特定のスパン要素を持つ をnextUntil選択する必要があります。tr

// Select the all next sibling elements until the first element that matches the selector
$("#firstrow").nextUntil('tr:has(span.hues)').hide();

http://jsfiddle.net/KDKeF/

セレクターに一致する次の兄弟要素をすべて選択する場合は、次のnextAllメソッドを使用できます。

// Select the all next sibling elements that match the selector
$("#firstrow").nextAll('tr:has(span.hues)').hide();
于 2013-05-01T16:17:49.657 に答える