2013-07-07 118 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');