2010-06-30 10 views
0

J'ai un élément div, avec un élément img dedans.Y at-il quelque chose comme isClicked dans jquery?

onclick de div i faire une fonction, et onclick sur img - une autre. mais quand je clique sur img il fait la première fonction aussi, car le img est dans div élément. donc, je pense que s'il y avait quelque chose comme isClicked, onclick de div je peux vérifier si img est pas cliqué ...

(je peux écrire une logique, et le vérifier par ainsi, pour exemple onclick de img i peut ajouter une classe à quelqu'un ... mais peut-être il y a une fonction pour elle)

Merci

Mise à jour:

<div class="left_expended" style="position: relative;"> 
    Լեզուներ 
    <img src="images/new_page.gif" id="new_lang" title="Լեզու ավելացնել" /> 
</div> 

et jquery

$(".left_expended").live('click', function(){ 
      $(this).addClass("left_collapsed"); 
      $(this).removeClass("left_expended"); 
      $(this).next("div .container").slideUp(400); 
     }); 

     $("#new_lang").click(function() 
     { 
      alert("something"); 
     }); 

onclick de img il fait aussi la première fonction.

Répondre

3

Vous pouvez empêcher le clic sur le <img> d'aller jusqu'à l'<div> en utilisant event.stopPrpagation(), comme ceci:

$("#new_lang").click(function(e) { 
    alert("something"); 
    e.stopPropagation(); //don't bubble! 
}); 

Qu'arrive-t-normalement est que events bubble, le click sur le <img> « bouillonne » à le <div> après ... sauf si vous l'arrêtez, ce qui est exactement ce que fait .stopPropagation(). Ce tout la façon dont l'activation de votre $("div").click(...) est partout à l'intérieur sauf l'image, car un simple clic, il n'y aurait pas s'élever plus, ce qui semble être ce que vous êtes après :)

+0

parfait. Merci;) – Simon

0

Je pense que maintenant, mais vous pouvez l'ajouter ajoutant ceci à votre code:

$("div,img").click(function(e){$(this).addClass("isClicked");e.stopPropagation();}); 

puis, vous pouvez jouer avec CSS ou jQuery, avec la classe ".isClicked"

espoir que vous avez aidé;)

1

http://api.jquery.com/bind/ parle un peu de la façon dont ils fonctionnent. En particulier:

De retour faux à partir d'un gestionnaire est équivaut à appeler les deux .preventDefault() et .stopPropagation() sur l'événement objet .

Questions connexes