预期的结果是在第一个和最后一个选定的div之间获得所有特殊div。
这有效,但不能写得更好吗?:
var s = $('div.selected'),
$spec = $('.speial'),
i = s.first().index('.speial'),
last = s.last().index('.speial');
for(;i<last;i++){
$spec.eq(i).addClass('gored');
}
我正在尝试这个:
var s = $('div.selected'),
$spec = $('.speial'),
i = s.first().index($spec),
last = s.last().index($spec);
for(;i<last;i++){
$spec.eq(i).addClass('gored');
}
但它不起作用......我对其原因感兴趣。 或者是否有更好的方法可以达到相同的效果?
编辑:我已经成功解决了问题:) fiddle
答案 0 :(得分:1)
如果没有看到HTML
,很难准确说出你想要的东西请澄清我是否错了,但似乎您想将gored
课程添加到.speial
内的所有div.selected
;
在这种情况下,这更容易:
$('div.selected .speial').addClass("gored");
正如我所说,这可能是错误的,请随意用简单的英语(最好是HTML代码段)明确说明你想要的内容
答案 1 :(得分:0)
尝试使用CSS:first-child和:last-child selectors
答案 2 :(得分:0)
答案 3 :(得分:0)
jQuery API doc:
如果在元素集合和DOM元素上调用.index()或 传入jQuery对象,.index()返回一个指示的整数 传递元素相对于原始集合的位置。
如果选择器字符串作为参数传递,则.index()返回一个 整数,指示jQuery中第一个元素的位置 相对于选择器匹配的元素的对象。如果 找不到元素,.index()将返回-1。
所以我似乎首先误解了两种情况下的相对性,所以我认为“选择器匹配的元素”可以被选择(jQuery对象)取代。
答案是.index()的工作方式与我预期不同。