我可以通过 for 循环重复 jQuery next() 吗?
Can I make a repeated jQuery next() by for loop?
我想要 select 一些兄弟元素。
所以我使用了 jQuery .next() 但我不知道如何重复。
// Repeat 3 times
$('#after').next().addClass('selected');
$('#after').next().next().addClass('selected');
$('#after').next().next().next().addClass('selected');
.selected {
color: red;
}
<ul>
<li>1</li>
<li>2</li>
<li id="after" data-num="3">3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如何通过for循环重复jQuery next()作为指定值,像这样?
(当然这不行。)
$('#after')
for(var i=0; i<$('#after').data('num'); i+=1){
.next().addClass('selected')
}
;
而不是 next()
使用 nextAll()
$('#after').nextAll("li").addClass('selected');
您不需要遍历所有元素。 nextAll()
将 select 所有 sibling
元素一直到 DOM
树中的源元素。
如果你想使用 out 循环语句,那么你必须这样做,
var srcElem = $("#after");
var srcIndex = srcElem.index() + 1;
var index = +srcElem.data("num");
secElem.closest("ul")
.find("li:gt("+ (index-1) +"):lt("+ (srcIndex + index) +")")
.addClass('selected');
在这里使用循环将是最好的方法,但要以优化的方式使用它,
var src = $('#after');
for (var i = 0, len = +src.data('num'); i < len; i++) {
src = src.next("li").addClass('selected');
if (!src.length) { break; }
}
DEMO
我想要 select 一些兄弟元素。 所以我使用了 jQuery .next() 但我不知道如何重复。
// Repeat 3 times
$('#after').next().addClass('selected');
$('#after').next().next().addClass('selected');
$('#after').next().next().next().addClass('selected');
.selected {
color: red;
}
<ul>
<li>1</li>
<li>2</li>
<li id="after" data-num="3">3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如何通过for循环重复jQuery next()作为指定值,像这样? (当然这不行。)
$('#after')
for(var i=0; i<$('#after').data('num'); i+=1){
.next().addClass('selected')
}
;
而不是 next()
使用 nextAll()
$('#after').nextAll("li").addClass('selected');
您不需要遍历所有元素。 nextAll()
将 select 所有 sibling
元素一直到 DOM
树中的源元素。
如果你想使用 out 循环语句,那么你必须这样做,
var srcElem = $("#after");
var srcIndex = srcElem.index() + 1;
var index = +srcElem.data("num");
secElem.closest("ul")
.find("li:gt("+ (index-1) +"):lt("+ (srcIndex + index) +")")
.addClass('selected');
在这里使用循环将是最好的方法,但要以优化的方式使用它,
var src = $('#after');
for (var i = 0, len = +src.data('num'); i < len; i++) {
src = src.next("li").addClass('selected');
if (!src.length) { break; }
}