Toggle 4 níveis jquery - para ninjas
Galera, seguinte
Preciso criar linha que ficam ocultas ou não através de [ + ] e [ - ]
Estou tendo muito trabalho
Basicamente eu tenho cada div com marcadores
<div data-id-p="1">Essa é a div 1</div>
a div que vai ficar oculta abaixo dessa é
<div data-id-p="2" data-id-pai="1">Essa é a div 2 filha da div 1</div>
e segue lógica
<div data-id-p="3" data-id-pai="2">Essa é a div 3 filha da div 2</div>
Ou seja marcação é simples, eu posso ter 4 níveis de div filha e pai, aqui é que está o problema.
Minha marcação HTML está assim
<div class="div_p" id="div_567" data-id-pai="" data-id-p="567" style="border-top: 1px solid #d5d5d5;" >
567<b style="font-weight: normal" data-id-p="567" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div data-id-pai="567" data-id-p="599 class="div_p" id="div_599" style="border-top: 1px dotted #999;padding-left: 30px;">
599<b style="font-weight: normal" data-id-p="599" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div data-id-pai="567" data-id-p="600" class="div_p" id="div_600" style="border-top: 1px dotted #999;padding-left: 30px;">
600<b style="font-weight: normal" data-id-p="600" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div data-id-pai="600" data-id-p="601" class="div_p" id="div_601" style="border-top: 1px dotted #999;padding-left: 60px; ">
601<b style="font-weight: normal" data-id-p="601" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div data-id-pai="601" data-id-p="602" class="div_p" id="div_602" style="border-top: 1px dotted #999;padding-left: 90px;">
602<b style="font-weight: normal" data-id-p="602" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div class="div_p" id="div_603" data-id-pai="" data-id-p="603" style="border-top: 1px solid #d5d5d5;" >
603<b style="font-weight: normal" data-id-p="567" class="toggle_expandir pointer">[ - ]</b>
</div>
<br />
<div data-id-pai="603" data-id-p="604" class="div_p" id="div_604" style="border-top: 1px dotted #999;padding-left: 30px;">
604<b style="font-weight: normal" data-id-p="604" class="toggle_expandir pointer">[ - ]</b>
</div>
Eu criei um js com jquery mais está horrível, deve haver uma forma simples de faezr, mas nao consigo. podem me ajudar?
segue js e abaixo link
$(document).ready(function() {
$('.toggle_expandir').live('click', function() {
if($(this).text() == '[ + ]') $(this).html('[ - ]');
else $(this).html('[ + ]');
//nivel 1
var id_p = $(this).attr('data-id-p');
$('div[data-id-pai='+id_p+']').each(function(i){
if($(this).is(":visible")) {
$(this).hide();
var pai_status = 0;
}else { var pai_status = 1; $(this).show(); }
var filho = $(this).attr('data-id-p');
$('div[data-id-pai='+filho+']').each(function(z){
if(($(this).is(":visible") || pai_status == 0)) {
$(this).hide();
var filho_status = 0;
}else { var filho_status = 1; $(this).show();}
var neto = $(this).attr('data-id-p');
$('div[data-id-pai='+neto+']').each(function(w){
if($(this).is(":visible") || filho_status == 0 || pai_status == 0) {
$(this).hide();
var neto_status = 0;
}else { var neto_status = 1; $(this).show(); }
});
});
});
});
});
Para ver rodando, segue link
Discussão (5)
Carregando comentários...