2013-05-15 65 views
1

我有这样的代码:选择容器内的所有以前的元素?

<div id="whatever"> 
    <span>1</span> 
    <span>2</span> 
    <span>3</span> 
    <span>4</span> 
</div> 
<div id="whatever2"> 
    <span>1</span> 
    <span>2</span> 
    <span>3</span> 
    <span>4</span> 
</div> 

我需要用jQuery选择从我悬停同一div内的一个以前所有的跨度。

有谁知道我能做到这一点?

回答

5

您可以使用prevAll()来实现此目的。

prevAll() - 获取匹配的 元素集合中每个元素的所有前面的同胞元素,可以通过选择器进行过滤。

这里是一个jsFiddle的例子。


下面是这个例子的代码:

的jQuery:

$('span').hover(function(){ 
    $(this).prevAll().toggleClass('previous'); 
}); 

CSS:

.previous { 
    color:red; 
} 
+1

谢谢!这就是我一直在寻找的。 – victorgonal

+0

为什么css()的事情是:D –

1
var span = $('div').prev().children('span'); 
+0

将在专区内选择所有的跨度,我想选择所有的DIV内的是以前的一个我悬停:( – victorgonal

+1

您可以编辑乌尔问题,给我们的输出,所以我们可以理解跨度ü以及 –

+1

我认为天顶得到的答案 –

0

你会使用jQuery的prev()方法来选择前一个元素。在这种情况下,#whatever#whatever2的上一个元素。

$('#whatever2').prev(); 

要选择内的元素,那么你只需使用jQuery的children()方法:

$('#whatever2').prev().children(); 

要做到这一点就在#whatever分隔跨度的悬停,你可以使用:

$('#whatever2').on('mouseover', 'span', function() { 
    var $parent = $(this).parent(); // #whatever2 
    $parent.prev().children(); // The span elements within 
}); 

编辑:基于对另一个答案的评论我误解了这个问题。这个答案与任何想要在前一个容器中选择所有元素的人有关。

0

看看这里我已经做了的jsfiddle http://jsfiddle.net/4DmqU/

代码是在这里

HTML -

<div id="whatever"> 
<span>1</span> 
<span>2</span> 
<span>3</span> 
<span>4</span> 
</div> 
<div id="whatever2"> 
<span>1</span> 
<span>2</span> 
<span>3</span> 
<span>4</span> 
</div> 

CSS -

span{ 
width:100px; 
height:20px; 
background :#ccc; 
float:left; 
margin: 10px; 
} 

JS -

$('span').hover(function(){ 
$(this).prevAll('span').css('background','#000'); 
});