使用jquery nearest()查找具有已知兄弟的最近元素

时间:2013-03-18 17:50:23

标签: jquery xpath closest siblings

我正在尝试使用jquery nearest命令根据元素是否具有特定的兄弟来查找特定元素。我一直在玩不同的选择器,但还没能找到一个能满足我想要的选择器。

例如,如果结构类似于以下

<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的范围开始最接近,我希望它返回它的父td,因为它有一个标记有siblingmatch属性的兄弟。但是,如果我从标记为b的范围开始运行相同的命令,我希望它返回表标记,因为这是它找到的第一个父标记,其兄弟标记为siblingmatch属性。

1 个答案:

答案 0 :(得分:3)

您可以使用parentsfilter方法。

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

http://jsfiddle.net/WW5qL/

请注意siblingmatch不是有效属性,您可以使用HTML5 data-*属性。