我希望在特定元素之后获取所有复选框。 此复选框位于不同的div和表中。 我试过了:
$('.available').click(function() {
$(this).nextAll("input:checkbox").each(function()
{
//code
});
});
由于
答案 0 :(得分:6)
你必须爬上DOM(test case):
$(this)
.parents().andSelf() // get all parents of this as well
.nextAll().find('input:checkbox').andSelf() // get all siblings after and find any
.filter('input:checkbox'); // if real next sibling wasn't, kill it
请记住这是非常重要的。你是:
这是 jQuery 魔术,但除了jQuery之外,肯定有更好的方法。这可能是O(n ^ n)复杂性 - 最糟糕的一种。
答案 1 :(得分:0)
我不知道你的特定元素是否是一个复选框,否则你必须从一个包含所有复选框和元素的集合开始:
var selector = ':checkbox, #target';
然后,您可以使用index()
:
var targetIx = $('#target').index(selector);
您还可以使用该索引将您的设置减少到所有内容:
var elementsAfter = $(selector).slice(targetIx+1);
答案 2 :(得分:0)
nextAll
只会得到兄弟姐妹,所以......
首先让我们获取所有复选框:
var checkboxes = $("input:checkbox");
接下来,准备一个数组来保存我们想要的数组:
var checkboxesslice = [];
现在让我们循环来寻找我们的起点:
var startedyet = false;
for( var i=0; i<checkboxes.length; i+=1){
if(startedyet){
checkboxesslice.push(checkboxes[i]);
}
if(checkboxes[i] === $(this) ){
startedyet = true;
}
}
这是完全未经测试的,但你会明白这一点。