2011-06-24 21 views
3

我已经构建了一个JQuery CSS3图像库。问题是下面的代码中的下一个函数不是工作问题。JQuery .next()函数获取所有下一个元素不是一个

function gallery() { 

     var islide = $('.cornerimg:visible'); 
     $(islide).removeClass('cornerimgfocus'); 
     $(islide).next().addClass('cornerimgfocus'); 
     setTimeout(function() { 
      gallery() 
     },4000); 
} 
$(window).load(function() { 
    $('.cornerimg').first().addClass('cornerimgfocus'); 
    setTimeout(function() { 
      gallery() 
     },4000); 
}); 

下一个功能是对所有下一个元素进行操作,而不仅仅是对下一个元素进行操作。其结果是,所有跟随第一个与类.cornerimg相关的元素都变得可见了。

HTML

<div class="imageitem">  
    <div class="cornerimg" style="background-image:url(http://www.golfbrowser.com/wp-content/uploads/2011/05/DSC00764s-968x400.jpg);"></div> 
    <div class="cornerimg" style="background-image:url(http://www.golfbrowser.com/wp-content/uploads/2011/05/DSC00762s-968x400.jpg);"></div> 
    <div class="cornerimg" style="background-image:url(http://www.golfbrowser.com/wp-content/uploads/2011/05/DSC00759s-968x400.jpg);"></div> 
</div> 

任何想法?

非凡

+2

你不需要写'$(I幻灯片式)'什么。 – SLaks

回答

2

你为什么不与选择.cornerimgfocus。就我看到的代码而言,这是应该/可见的幻灯片。 :visible选择器似乎选择所有div。

function gallery() { 

     var islide = $('.cornerimgfocus'); 
     islide.removeClass('cornerimgfocus'); 
     islide.next().addClass('cornerimgfocus'); 
     setTimeout(function() { 
      gallery() 
     },4000); 
} 
+0

干得好...... –

4

.next()选择每个元件组中的之后的下一个元素。

如果set ñ元素,.next()也会有ñ元素。您可能需要.first().next().eq(1)

1

答案是在文档中:“让紧随其后的每个元素的兄弟在一套匹配元素“。 jquery next()

您的初始选择器正在返回每个cornerimg div,所以next会返回其中每个元素的下一个元素。

尝试这样做是为了拿到第一个要素,继续你的代码的其余部分像以前一样(但删除$()周围的I幻灯片式表示SLaks):

var islide = $('.cornerimg:visible').eq(0); // or .first() 
1

API documentationGet the immediately following sibling of each element in the set of matched elements.所以它只有紧随其后的元素(相对于nextAll)。问题是$(islide)包含很多相邻元素,因此$(islide).next()将包含紧接其中一个元素(即$(islide)除第一个元素外加$(islide)最后一个元素之后的元素)的所有元素。根据您的需要,您可以尝试类似$(islide).last()$(islide).next(':not(.cornerimg)')

0

我觉得这是你想要

function gallery(elem) { 

    $(elem).removeClass('cornerimgfocus'); 
    $(elem).next().addClass('cornerimgfocus'); 
    setTimeout(function() { 
     if($(elem).next().length!=0) 
     gallery($(elem).next().first()); 
    },4000); 
} 
$(window).load(function() { 
$('.cornerimg').first().addClass('cornerimgfocus'); 
setTimeout(function() { 
     gallery($('.cornerimg:visible').first()) 
    },4000); 
}); 
相关问题