L'élément déclenche-t-il un événement onclick dans jquery?

J'ai un formulaire où j'ai remplacé le bouton de soumission par une entrée (avec type = button) avec un onclick qui appelle une fonction existante:

<form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post"> <!-- some fields --> <input onclick="confirmSubmit();" type="button" value="Send" /> </form> 

Dans le confirmSubmit, j'aimerais pouvoir obtenir de manière dynamique l'objet de formulaire (le soumettre), au lieu d'avoir à coder le code de formulaire ou le transmettre dans le cadre de l'appel pour confirmerSubmit (). J'aurais pensé que je pourrais le faire en obtenant d'abord l'élément dom qui a été cliqué, c'est-à-dire quelque chose comme ceci:

 var form = $(this).parents("form"); 

Où $ (this) est l'objet qui a appelé la fonction, c'est-à-dire l'entrée avec l'onclick. Cela ne fonctionne pas cependant. Je pense que cela fonctionnerait si je le configurais avec le .click(function(){ syntax. Puis-je obtenir l'élément qui appelait la fonction d'une manière différente?

EDIT – a obtenu la réponse de @claudio ci-dessous, pour plus de clarté, voici la fonction complète et l'appel:

 <form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post"> <!-- some fields --> <input onclick="confirmSubmit($(this));" type="button" value="Send" /> </form> 

Et la fonction elle-même. Notez que 'jConfirm' est une méthode du plugin jquery-alerts (http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/), mais ce n'est pas vraiment pertinent pour cette question. La clé était juste Pour obtenir l'objet forme, pas ce qui a été fait avec lui:

 function confirmSubmit(caller) { var form = caller.parents("form"); jConfirm('Are you sure?', 'Please Confirm', function(result){ if (result) { form.submit(); } else { return false; } }); } 

Vous pouvez passer le gestionnaire en ligne de this mot this clé, en obtenant l'élément qui a déclenché l'événement.

comme,

 onclick="confirmSubmit(this);" 

Si vous ne souhaitez pas passer l'élément cliqué sur la fonction par un paramètre, vous devez accéder à l'objet d'événement qui se passe et obtenir la cible à partir de cet objet. Cela se fait le plus facilement si vous liez l'événement de clic comme ceci:

 $('#sendButton').click(function(e){ var SendButton = $(e.target); var TheForm = SendButton.parents('form'); TheForm.submit(); return false; }); 

Essaye ça

 <input onclick="confirmSubmit(event);" type="button" value="Send" /> 

Avec cela

 function confirmSubmit(event){ var domElement =$(event.target); console.log(domElement.attr('type')); } 

Je l'ai essayé dans firefox, il imprime l'attribut 'type' de l'élément Dom a cliqué. Je suppose que vous pouvez alors obtenir le formulaire via les méthodes parents () utilisant cet objet.

C'est la meilleure question de google stackoverflow, mais toutes les réponses ne sont pas jQuery liées!

 $(".someclass").click( function(event) { console.log(event, this); } ); 

'Event' contient 2 valeurs importantes:

Event.currentTarget – élément auquel l'événement est déclenché (élément '.someclass')

Event.target – element clicked (dans le cas où à l'intérieur '.someclass' [div] sont d'autres éléments et vous avez cliqué sur eux)

Ceci – est défini sur l'élément déclenché ('.someclass'), mais c'est l'élément JavaScript, pas l'élément jQuery, donc si vous souhaitez utiliser une fonction jQuery sur celui-ci, vous devez d'abord le modifier dans l'élément jQuery: $ (this)