2012-03-16 9 views
-1

これは、現在のコードである上.next()を使用する方法:いくつかの要素

$("input[name='content_use']").click(function() { 
    if ($(this).is(":checked")){ 
     $(this).closest('tr').next().show(); 
     $(this).closest('tr').next().next().show(); 
     $(this).closest('tr').next().next().next().show(); 
    } else{ 
     $(this).closest('tr').next().hide(); 
     $(this).closest('tr').next().next().hide(); 
     $(this).closest('tr').next().next().next().hide(); 
    } 
}); 

:|

EDIT:

あなたは連続する行に到達するために繰り返しnext()使用することを私がしなければならない見ることができるように。どのようにこれを短く書くことができますか?


ソリューションnextUntil()

+4

えっ?もう一度やり直して...あなたは何を求めようとしていますか –

+0

あなたのマークアップは何ですか? 'nextUntil'が解決策かもしれません。 – pimvdb

+0

ください。それはかなり明白です... –

答えて

1

使用.nextAllを@pimvdbのおかげで "マッチした要素の集合の各要素のすべての次の兄弟を取得します":

$("input[name='content_use']").click(function() { 
    if (this.checked) { 
     $(this).closest('tr').nextAll().show(); 
    } else { 
     $(this).closest('tr').nextAll().hide(); 
    } 
}); 
+1

'.toggle(bool)'を使うこともあります。 – pimvdb

+0

@pimvdb '' $ '(this).closest(' tr ')。nextAll()。toggle(this.checked) 'を使うと、' 'show''と' hide''が関数内のメソッドのみ - ドキュメント:http://api.jquery.com/toggle/ –

+0

良いと思われますが、すべての兄弟の行に2,3、または4しか到達したくありません。 –

関連する問題