2013-07-07 37 views
1

我想要使用JQuery获取连续的元素数组。对于〔实施例的这个网站:JQuery获得元素的连续序列

<div class="parent"> 
    <div class="childType2">1</div> 
    <div class="childType2">2</div> 
    <div class="childType2">3</div> 
    <div class="childType1">4</div> 
    <div class="childType1">5</div> 
    <div class="childType1">6</div> 
    <div class="childType1">7</div> 
    <div class="childType2">8</div> 
    <div class="childType1">9</div> 
    <div class="childType1">10</div> 
    <div class="childType1">11</div> 
    <div class="childType1">12</div> 
</div> 

我希望它返回一个包含4,5,6,7(与类=“childType1”的div的第一sequnce)div的。

我试图做

$("<div>test</div>")($('.parent .childType2').siblings('.childType1').addBack()); 

但是,这当然会与上次childType1之后的文本测试(12)增加股利。

对不起noob问题和坏英语! JQuery不太好。

编辑:

由于div的是dynamiclly产生,我最终增加了对每一个“组”与他的组ID的一类特殊的定位后,和使用suspectus的回答中描述的方法。不正是我想到的,但它的工作原理:D。非常感谢你的答案!

回答

0
<div class="parent"> 
    <div class="childType2">1</div> 
    <div class="childType2">2</div> 
    <div class="childType2">3</div> 
    <div class="childType1 inner">4</div> 
    <div class="childType1 inner">5</div> 
    <div class="childType1 inner">6</div> 
    <div class="childType1 inner">7</div> 
    <div class="childType2">8</div> 
    <div class="childType1">9</div> 
    <div class="childType1">10</div> 
    <div class="childType1">11</div> 
    <div class="childType1">12</div> 
</div> 

$(".inner") // gives the elements required 
0

您可以使用filter此:

var $elements = $(".childType1").filter(function() { 
    var no = parseInt($(this).text(), 10) 
    return ((no > 3) && (no < 8)) 
}); 

现在$elements将只包含3和8之间的匹配的元素,即4到7

0

可以使用。每个(。 )用于循环所有具有class =“childType1”的div的方法

以下是完整的代码。根据您的需要修改它。

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $(".childType1").each(function (i) { 
      if ($(this).html() == "4" ||$(this).html() == "5" || $(this).html() == "6" ||$(this).html() == "7") { 
      alert($(this).html()); 
      } 
     }); 
    }); 
</script> 
</head> 
<body> 
<div class="parent"> 
    <div class="childType2">1</div> 
    <div class="childType2">2</div> 
    <div class="childType2">3</div> 
    <div class="childType1">4</div> 
    <div class="childType1">5</div> 
    <div class="childType1">6</div> 
    <div class="childType1">7</div> 
    <div class="childType2">8</div> 
    <div class="childType1">9</div> 
    <div class="childType1">10</div> 
    <div class="childType1">11</div> 
    <div class="childType1">12</div> 
</div> 
</body> 
</html> 
1

您可以使用.eachdocs)或.filterdocs)。如果您使用.filter(),则可以在其之后链接另一个jQuery方法。

var state = 0; 
var elements = []; 

$('.parent div').each(function(i, elem) { 
    if(state != 2 && elem.className === "childType1") { 
     state = 1; 
     elements.push(elem); 
    } else if (state == 1) { 
     state = 2; 
    } 
}); 

console.log(elements); 

或者更多的jQuery的方法:

var state = 0; 

$('.parent div').filter(function() { 
    if(state != 2 && $(this).hasClass("childType1")) { 
     state = 1; 
     return true; 
    } else if (state == 1) { 
     state = 2; 
    } 
    return false; 
}).css('background-color', 'red');