我想只选择与X类匹配的元素,并且没有任何兄弟姐妹也有X类。在我的例子中,X = hasDatepicker
。以下是我的想法:
$('.hasDatepicker:not(.hasDatepicker ~ .hasDatepicker)')
但是,这并不排除第一个元素,所以在任何一组日期选择器中,这仍然会选择第一个元素。我不想包括任何一组,只包括单曲。
1 匹配的示例:
<div class="input text">
<input name="data[Goal][date_started]" type="text" value="" class="hasDatepicker" style="display: none; ">
<button type="button" class="ui-datepicker-trigger"><img src="/themed/mocha/images/btn_calendar.png" alt="..." title="..."></button>
</div>
0 的示例匹配:
<div class="input text">
<input type="text" value="" id="GoalDateStarted" class="hasDatepicker"><input type="text" value="" class="hasDatepicker" style="display: none; ">
<input type="text" value="" class="hasDatepicker" style="display: none; ">
<input name="data[Goal][date_started]" type="text" value="" class="hasDatepicker" style="display: none; ">
<button type="button" class="ui-datepicker-trigger"><img src="/themed/mocha/images/btn_calendar.png" alt="..." title="..."></button>
</div>
有什么想法吗?谢谢!
答案 0 :(得分:8)
它不是那么优雅,但它使用:first-child伪选择器并使用.filter()过滤结果集来实现技巧:
:first-child
将有助于仅选择可能的多个兄弟列表中的第一个.test元素
使用.filter()
来实际检查是否没有同一班级的兄弟姐妹
以下是代码:
var a = $('.test:first-child').filter(function() {
//return $(this).parent().find('.test').not(this).length == 0;
return !$(this).siblings('.test').length
});
<强> DEMO 强>