2011-03-24 3 views
0

J'ai le code jquery comme ceci:Jquery quel objet utiliser

$(".element").live('click', function(e) { 
    $(".element").css("height", $(this).parent().height() +"px") ; 
}); 

Ce que je veux est:

Modifier la hauteur de tous « .element » s à la hauteur de leurs parents (différent pour chacun). Le problème est que la balise $ (this) fait référence à l'élément sur lequel on a cliqué (la fonction de test fictive changera plus tard). J'ai essayé d'utiliser $ (". Element"). Parent(). Height(), mais cela ne semble pas non plus être le cas. Comment puis-je me référer à l'élément réel correct?

+0

Donc, au clic de tout élément que vous voulez que sa taille soit la hauteur du parent? Ou vous voulez que tout le monde se mette à la taille de ses parents? – justkt

+0

tous les éléments doivent changer leur hauteur à la hauteur du parent (peut être différent pour chacun) – Flo

+3

ok, attendez une seconde. Ceci est maintenant encore plus clair pour moi. Quand ONE '$ ('. Element')' est cliqué, vous voulez changer TOUS les '$ ('. Element')' 'à la hauteur de leurs parents? Ou vous voulez juste changer le parent de l'élément unique quand il est cliqué? – Groovetrain

Répondre

4

Si vous voulez dire que cliquer sur un .element devrait changer la hauteur de toutes .element s à la hauteur de leurs parents respectifs, essayez ceci:

$(".element").live('click', function(e) { 
    $(".element").each(function(){ 
     $(this).css("height", $(this).parent().height() +"px"); 
    }); 
}); 
+0

merci c'est exactement – Flo

3

Vous devriez avoir aucun problème si vous le faites comme ceci:

$(".element").live('click', function(e) { 
    $(this).css("height", $(this).parent().height() +"px") ; 
}); 

Vous avez raison $(this) fait référence à l'élément qui a été cliqué, donc vous devez utiliser this dans tous les cas. Vous voulez changer l'élément qui a été cliqué sur sa hauteur (c'est la hauteur) à l'élément sur lequel a été cliqué sur la hauteur parentale (c'est la hauteur du parent), n'est-ce pas?

+1

Cela ne fera que changer l'un des divs, je pense que le PO veut que tous les changements à la fois. – justkt

+1

@justkt Je pense que vous avez raison. Mais sa formulation était un peu floue, j'ai demandé des éclaircissements. – Groovetrain

+0

c'est certainement correct si c'est snap l'élément cliqué seulement à la hauteur de parent sur le clic – justkt

1

Le code suivant, le clic sur tout DOM objet avec l'élément de classe, parcourez tous les éléments et accrochez-les à la hauteur parente.

$(".element").live('click', function(e) { 
    // go through each object with class element 
    $(".element").each(function() { 
     $(this).css("height", $(this).parent().height() +"px") ; 
    }); 
}); 
+0

Mec, vous avez totalement juste été sniped. Upvote pour vous. – Groovetrain