我正在尝试使用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属性。
答案 0 :(得分:3)
您可以使用parents
和filter
方法。
$('span').click(function(){
var matched = $(this).parents().filter(function(){
return $(this).siblings('[siblingmatch]').length;
}).first();
});
请注意siblingmatch
不是有效属性,您可以使用HTML5 data-*
属性。