2010-12-10 17 views
2

J'ai une div comme ui-widget-content avec un h3 comme un ui-widget-header. L'en-tête a trois boutons. Chacun a la classe "save" "delete" et "cancel" respectivement. Je veux avoir une fonction .click quand vous cliquez sur la div, sauf si vous cliquez sur l'un des boutons.jquery/jqueryui, cliquez n'importe où dans div en dehors du bouton

J'ai essayé: $(".record").not(".save").not(".delete").not(".cancel").click(

mon code est:

<div class="record cursorPointer hoverClass ui-widget-content"> 
    <h3 class="ui-widget-header"> 
     <table width="100%"><tr> 
      <td align="left" style="width:33%; color:Red">somecontractorone</td> 
      <td style="width:33%" align="center"> Name: Joe Q Shmoe </td> 
      <td style="width:33%" align="right"> Buisness: joeqshmoeelectrical</td> 
      <td><button style="width:20px;height:20px" class="save"></button></td> 
      <td><button style="width:20px;height:20px" class="delete"></button></td> 
      <td><button style="width:20px;height:20px" class="cancel"></button></td></tr> 
     </table> 
    </h3> 
</div> 

Cependant, la fonction de clic toujours activé lorsque vous cliquez sur les boutons.

Des idées?

Répondre

9

Vous pouvez utiliser le event.target pour voir ce qui a été cliqué. Ensuite, comptez même bouillonner et attacher le gestionnaire de clic sur le parent div. jsfiddle

$('.record').click(function(e){ 
    if($(e.target).is(':button')) 
     alert('button'); 
    else 
     alert('not button'); 
}); 
+0

'$ ("enregistrement") cliquez sur (function (e) { if ($ (e.target) .is (! ': Bouton')) {' œuvres. Mais je ne suis pas sûr que cela fonctionne et la façon dont je l'ai fait ne ... – kralco626

+1

@ kralco626 - Essayez l'exemple jsfiddle si vous avez encore des problèmes. –

+0

Je l'ai eu pour travailler avec le e.target. Je ne sais pas exactement pourquoi cela ne marche pas mon chemin, mais c'est ok. Merci! – kralco626

2

En supposant que vous avez un autre gestionnaire d'événements (ou plusieurs) qui gère les boutons, vous pouvez empêcher la bouillonnante là avec

$('button').click(function(e) { 
    e.stopPropagation(); 
    switch(this.className) { 
     // Or whatever... 
    } 
}) 
1

Utilisez e.stopPropagation() dans les boutons cliquez sur Gestionnaire (s):

$('button').click(function(e) { 
    e.stopPropagation(); 
    alert('you clicked a button!'); 
}); 

Voici une démo: http://jsfiddle.net/Ender/2yERz/

Et la documentation sur e.stopPropagation(): http://www.quirksmode.org/js/events_order.html#link9

+0

Je vais certainement utiliser la solution de Josiah pour l'instant, jusqu'à ce que je vais réellement mettre en œuvre les clics sur les boutons. C'est une bonne idée cependant. – kralco626