2015-01-26 3 views
0

전체 페이지에서 클릭 한 후 일치하는 모든 요소를 ​​선택하는 기능을 찾으려고합니다. 그들이 어떤 용기에 있든 상관없이 다음에 나오는 것은 형제들에게만 주어집니다. 초를 클릭하면 클래스 패밀리가있는 모든 DIV가 첫 번째 및 두 번째 텍스트가있는 클래스를 제외한 나머지 클래스에 할당됩니다.전체 페이지의 다음 전체

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>nextAll demo</title> 
    <style> 
    div { 
    width: 80px; 
    height: 80px; 
    background: #abc; 
    border: 2px solid black; 
    margin: 10px; 
    float: left; 
    } 
    div.after { 
    border-color: red; 
    } 
    </style> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<div class="family" >First</div> 
<div class="family" >Second</div> 
<div>sibling<div class="family">child</div></div> 
<div class="family">sibling</div> 
<div class="family">sibling</div> 
<script> 

$('div.family').click(function(){ 
    $(this).nextAll('.family').addClass("after"); 
}); 

</script> 

</body> 
</html> 
+1

[jQuery의 가능한 중복으로 표현식과 일치하는 이전 요소를 모두 찾을 수 있음] (http://stackoverflow.com/questions/322912/jquery-to-find-all-previous-elements-that-match-an-expression) – DaniP

+0

중복에 대한 답을 확인하십시오. 다음 단계를 더 잘 평가하고 미리 시험해 볼 수있는 기능을 제공합니다. – DaniP

+0

감사합니다. 완벽한 해결책이었습니다. 나는 수색에 그것을 찾아내는 말썽이 있었다. – Snuur

답변

1

그냥 우리가 할 것은 아니다 있는지 Array.indexOf의 사용을 다음 사업부에서하고 안 텍스트를 포함하는 배열을 활용입니다 $.fn.filter

var txts = ["First", "Second"]; 
$('div.family').click(function(){ 
    $('.family').filter(function(){ 
     return txts.indexOf($(this).text().trim()) == -1 
    }).addClass("after"); 
}); 

를 사용합니다 유효한.

+0

당신의 노력에 감사드립니다! – Snuur

+0

@ 도움이 기쁩니다 :) 확인 표시를 클릭하여 답변을 표시하십시오. –

+0

예,이 답변은 유일하지만 실제로 위에 열거 한 중복 질문에서 주어진 답을 사용했습니다. 그래서 여기서 무엇을 해야할지 잘 모릅니다. – Snuur

관련 문제