jQuery nextUntil()在结束标记处停止
我试图获取前两个类“selected”之间的所有td元素。并将文本颜色更改为绿色。我一直在使用nextUntil,但我面临的问题是,当出现新的jQuery nextUntil()在结束标记处停止,jquery,dom,select,Jquery,Dom,Select,我试图获取前两个类“selected”之间的所有td元素。并将文本颜色更改为绿色。我一直在使用nextUntil,但我面临的问题是,当出现新的时,它不会抓取那些td元素。有没有一种方法可以使用nextUntil忽略任何标记?谢谢 jQuery: var firstDate = $('table.jCalendar tbody').find($('td.selected')[0]); var secondDate = $('table.jCalendar tbody').find($('td.se
时,它不会抓取那些td元素。有没有一种方法可以使用nextUntil忽略任何
标记?谢谢
jQuery:
var firstDate = $('table.jCalendar tbody').find($('td.selected')[0]);
var secondDate = $('table.jCalendar tbody').find($('td.selected')[1]);
$(firstDate).nextUntil(secondDate).css("color", "green");
HTML:
18
19
20
21
22
23
24
25
26
27
28
29
30
31
因此,为了澄清,我希望td元素的文本20到26被选中,但21到24只被选中。有时,在所选类别的td标记之间有不止一组
标记。不太可能;这就是nextUntil
的设计方法。您需要创建一个每个
循环,该循环按顺序运行于所有
标记中:
var color_it = false;
$('table.jCalendar tbody').find('td').each(function() {
var $this = $(this);
if $this.is(firstDate) {
color_it = true;
};
if $this.is(secondDate) {
color_it = false;
};
if (color_it) {
$this.css("color", "green");
};
});
值得一提的是,您还可以用
标记替换表格单元格,这些标记具有显示:表格单元格代码>附加样式。那他们就都是兄弟姐妹了。然而,.我的理解是突出显示每个TD,而不管所选的两个类之间的行
我使用类更改而不是内联CSS,因为用一行代码就可以更容易地删除后续选择
演示:
其他较短版本:
演示:
在这种方法中,您可以选择所有单元格,并过滤掉选择前后的单元格
var selectStart = false;
$('table.jCalendar td').not(function() {
if ($(this).hasClass('selected')) {
selectStart = !selectStart;
}
return !selectStart;
}).css({color:'green'});
.nextUntil(
仅检查同级
。25,26
不是第一个的同级。选定的
。它们是否总是以相同数量的td连续排列在行中?如果需要调整,使绿色类不会与选定类冲突,只需调整slice()中的两个索引变量即可
var firstRow = $('td.selected:first').parent()
var secondRow = $('td.selected:last').parent();
$('tr').slice(firstRow.index() + 1, secondRow.index()).find('td').addClass('green')
firstRow.find('.selected').nextAll().andSelf().addClass('green')
secondRow.find('.selected').prevAll().andSelf().addClass('green')
var $cells = $('tbody td'),
idx_1 = $cells.index($('td.selected:first')),
idx_2 = $cells.index($('td.selected:last'));
$cells.slice(idx_1, idx_2 + 1).addClass('green');
var selectStart = false;
$('table.jCalendar td').not(function() {
if ($(this).hasClass('selected')) {
selectStart = !selectStart;
}
return !selectStart;
}).css({color:'green'});