Obtenez de l'élément de déclenchement d'un événement onclick en jquery?
J'ai un formulaire dans lequel j'ai remplacé le bouton soumettre avec une entrée (avec type=bouton) 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 la forme de l'objet (à soumettre), au lieu de coder en dur le formulaire d'identification du ou de la transmettre dans le cadre de l'appel à confirmSubmit(). J'aurais pensé que je pouvais ce faire, commencez par obtenir l'élément du 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 le onclick. Cela ne fonctionne pas bien. Je pense qu'il serait travail si j'avais mis en place avec le .click(function(){
de la syntaxe. Puis-je obtenir l'élément qui a appelé la fonction d'une manière différente?
EDIT - j'ai la réponse de @claudio ci-dessous, pour plus de clarté, voici la fonction complète et 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 le jConfirm' est une méthode de jquery alertes plugin (http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/) mais ce n'est pas vraiment pertinente à cette question - la clé, c'était juste pour obtenir la forme de l'objet, non pas ce qui est par la suite fait avec elle:
function confirmSubmit(caller) {
var form = caller.parents("form");
jConfirm('Are you sure?', 'Please Confirm', function(result){
if (result) {
form.submit();
} else {
return false;
}
});
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer la ligne de gestionnaire de la
this
mot-clé, l'obtention de l'élément qui a déclenché l'événement.comme,
function confirmSubmit(caller) { var form = caller.parents("form");
mais il ne fonctionne pas...confirmSubmit(caller) { var form = $(caller).parents("form");
onclick="my_function($(this))"
plutôt que de simplement en utilisant(this)
. Hope qui aide toute personne ayant de la difficulté avec cela.Si vous ne voulez pas passer le cliqué sur l'élément de la fonction par l'intermédiaire d'un paramètre, alors vous avez besoin pour accéder à l'objet de l'événement qui se passe, et obtenir l'objectif de cet objet. C'est plus facile à faire si vous liez l'événement click comme ceci:
Essayer cette
Avec cette
Je l'ai essayé dans firefox, il imprime le 'type' de l'attribut de l'Élément dom cliqué. Je suppose que vous pouvez obtenir le formulaire par les parents() les méthodes à l'aide de cet objet.
C'est top google stackoverflow question, mais toutes les réponses ne sont pas jQuery liés!
'"événement" contient 2 valeurs importantes:
événement.currentTarget - élément de l'événement qui est déclenché ('.someclass " élément)
événement.cible - élément cliqué (dans le cas où à l'intérieur".someclass' [div] sont d'autres éléments et que vous avez cliqué sur d'eux)
ce, est déclenchée element ('.someclass"), mais c'est l'élément JavaScript, pas jQuery élément, donc si vous souhaitez utiliser certaines de fonction jQuery, vous devez d'abord changer de jQuery élément: $(this)