2011-08-26 16 views
5

ho questa struttura html di base:jQuery: un'iterazione su elementi nidificati utilizzando ogni

<div class=a> 
    <div class=m></div> 
    <div class=m></div> 
</div> 
<div class=b> 
    <div class=m></div> 
    <div class=m></div> 
</div> 

Ora voglio iterare su tutte le m del ma anche vorrei sapere se mi trovo in una o b. utilizzando la sintassi jquery di base ogni non riesco a farlo scoprire.

$('.m').each(function(index) { 
    // how do i know if this m is part of a or b ? 
}); 

risposta

8

$(this).parent().hasClass("a") o $(this).parent().hasClass("b")

0
$('.m').each(function(index) { 
    this.parentNode.getAttribute("class"); 
}); 
0

Per esempio, controllare il genitore è .a

if($(this).parent().is('.a')) 
1
if($(this).parent().hasClass('a')) 

e lo stesso per B, dovrebbe funzionare.

0

Si potrebbe utilizzare il metodo .closest:

var $this = $(this); 
if ($this.closest("a").length === 1) { 
    alert("I'm in an a div"); 
} 
else { 
    alert("I'm in a b div"); 
} 
1

Se avete a cuore, allora mi piacerebbe separare i selettori in questo modo:

$('.a .m').each(function(index) { 
    // now I'm on .a items 
}); 

$('.b .m').each(function(index) { 
    // now I'm on .b items 
}); 
0

È possibile controllare la classe dell'elemento genitore interno la funzione di individuare se si è in 'a' o 'b'

$('.m').each(function() { 
    var parentClass = $(this).parent().attr('class'); 
}); 

Così, il ParentClass var dovrebbe avere un valore di eithe r 'a' o 'b'

Problemi correlati