4

要素に特定の兄弟があるかどうかに基づいて、特定の要素を見つけるために jquery closest コマンドを使用しようとしています。私はさまざまなセレクターで遊んでいますが、私が望むものをまだ見つけることができませんでした。

たとえば、構造が次のようなものである場合

<div>
    <table>
        <tr>
            <td>
                  <span a>cell 1</span>
                  <span>cell 2</span>
            </td>
            <td siblingmatch="true">
                  <span b>cell 1</span>
                  <span>cell 2</span>
            </td>
        </tr>
    </table>

    <span siblingmatch="true">test 1</span>
</div>

a でマークされたスパンから最も近く走った場合、siblingmatch 属性でマークされた兄弟があるため、その親 td を返す必要があります。ただし、b でマークされたスパンから同じコマンドを実行した場合、テーブル タグを返す必要があります。これは、siblingmatch 属性でマークされた兄弟で見つかった最初の親だからです。

4

1 に答える 1

3

parentsおよびfilterメソッドを使用できます。

$('span').click(function(){
    var matched = $(this).parents().filter(function(){
         return $(this).siblings('[siblingmatch]').length;
    }).first();
});

http://jsfiddle.net/WW5qL/

siblingmatchは有効な属性ではないことに注意してくださいdata-*。代わりに HTML5 属性を使用できます。

于 2013-03-18T18:04:21.340 に答える