2010-11-23 6 views
1

J'ai une classe div = "parent". Quand je clique dessus, je dois cloner div class = "child" et les montrer en fonction de la zone parent sur laquelle j'ai cliqué. Le problème se pose lorsque je clique sur la classe div = "enfant", un autre enfant div apparaît, ce qui est le comportement que je ne veux pas vraiment. Une façon de surmonter ce problème est d'écrire quelque chose comme ceci:Identification de la zone cliquable

$('.parent').click(function(event){ if (event.target.className != 'child'){ $('.child').clone().show(); } });

Je considère que ce n'est pas très élégante, si à l'intérieur de la div class = « enfant » serait les enfants, alors vous devez mettez-les dans la déclaration if() aussi. Quelqu'un pourrait me dire comment gérer ce problème. Il existe probablement un moyen de placer tous les enfants de la classe div = "enfant" dans un tableau et de faire une boucle sur eux. Toutes les idées et les pensées ont apprécié, Merci

+0

vous devez poster votre code html aussi. – Sarfraz

Répondre

1
$('.parent').click(function(event){ 
    if (event.target === this){ 
    $('.child').clone().show(); 
    } 
}); 

Ne doit cibler que les parents et non les enfants. De la documentation jQuery:

event.target: La propriété cible peut être l'élément qui a enregistré pour l'événement ou un descendant de celui-ci. Il est souvent utile de comparer le paramètre event.target avec celui-ci dans afin de déterminer si l'événement est en cours de traitement en raison d'un événement de formation de bulles. Cette propriété est très utile dans l'événement délégation, lorsque les événements bulle.

Source

+0

Merci, c'est tout, == fonctionne également. – tylik

+0

Heureux que ça a aidé! –

1

Quel est le problème avec cela?

$('.parent').click(function(e) { 
    $(this).find('div[class=child]').show(); 
}); 
+0

lorsque vous cliquez sur un enfant div un autre enfant div montrera quel est le comportement que je ne veux pas – tylik

+0

J'ai besoin de plusieurs divs enfants pour montrer à l'intérieur de div parent et je dois les montrer lorsque la zone parent est cliquée, mais ils apparaissent aussi quand on clique sur une zone enfant et je ne veux pas ça – tylik

+0

Ohh .. Je l'ai maintenant. Bon, alors ça ne marchera pas. – Fred

1

essayer

jQuery('.parent').bind('click', function(){ 
    var NewChild = jQuery('.child').clone(false); 
    NewChild.appendTo(jQuery(this)); 
    NewChild.show(); 
} 

ce clone l'enfant et l'ajoute à votre parent, je ne sais pas si cela est nécessaire sinon il suffit de supprimer le clone appendTo et set (vrai)

+0

Le problème est lorsque vous cliquez sur un div .child un autre div .child apparaîtra. – tylik

+0

Je ai seulement besoin de cloner et montrer div enfant si la zone cliquable eqals à div div mais pas enfant div – tylik

Questions connexes