64 votes

Appel d'une fonction définie par l'utilisateur dans jQuery

J'essaie d'appeler une fonction définie par l'utilisateur dans jQuery :

$(document).ready(function() {
  $('#btnSun').click(function() {
    myFunction();
  });
  $.fn.myFunction = function() {
    alert('hi');
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>

J'ai également essayé ce qui suit :

$(document).ready(function() {
  $('#btnSun').click(function() {
    myFunction();
  });
});

function myFunction() {
  alert('hi');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>

Cela ne semble pas fonctionner ! Une idée de l'endroit où je me suis trompé ?

1 votes

Je définirais cela comme une plugin

1 votes

Juste une remarque, puisque vous utilisez $.fn.myFunction, dans la plupart des cas vous indiquez que vous voulez utiliser cette fonction sur un objet jquery enveloppé valide, par exemple. $('your_html_tag').myFunction() . jsfiddle.net/H7z8f

83voto

Nick Craver Points 313913

Si vous souhaitez appeler une fonction normale via un événement jQuery, vous pouvez procéder comme suit :

$(document).ready(function() {
  $('#btnSun').click(myFunction);
});

function myFunction() {
  alert('hi');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>

1 votes

Si vous avez besoin d'une fonction personnalisée pour un objet (par exemple, une variable), vous pouvez utiliser Object.prototype.SayIt = function(s){return this+s;}; var ramone='Hey Ho, '; var s = 'Lets go'; console.log(ramone.SayIt(s)); . Si vous rencontrez des difficultés, utilisez Object.defineProperty(Object.prototype, "SayIt", {value: function (s) { your stuff here }});

4 votes

@Nick Craver pouvez-vous ajouter des paramètres à une fonction définie par l'utilisateur si oui comment l'utiliseriez-vous {fonction myFunction(val1, val2) { /comment l'utiliseriez-vous ici }} et comment appelleriez-vous la fonction... merci.

0 votes

Cela n'a pas fonctionné pour moi. Celui de Ruslan López Carro a fonctionné (voir ci-dessous).

34voto

neeraj Points 131

Essayez donc ceci. Ça marche toujours.

$(document).ready(function() {
  $('#btnSun').click(function() {
    $.fn.myFunction();
  });
  $.fn.myFunction = function() {
    alert('hi');
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>

0 votes

J'essayais de perdre mon temps dans des choses stupides. J'ai essayé tous les codes mentionnés ici, mais je n'ai même pas réussi à les utiliser. alert(0); il. J'ai essayé de trouver une solution et voilà, j'ai appuyé sur F12 et il semble que mon AdBlocker empêchait certains contenus de s'afficher. En savoir plus : Échec du chargement d'une ressource dans l'api google.maps de chrome

12voto

jholster Points 3456

Ils sont appelés plugins comme l'a fait remarquer Jaboc. Pour avoir un sens, la fonction plugin doit faire quelque chose avec l'élément par lequel elle est appelée. Considérons ce qui suit :

jQuery.fn.make_me_red = function() {
    return this.each(function() {
        this.style.color = 'red';
    });
};

$('a').make_me_red();

9voto

CreativeMirage Points 51

La méthode suivante est la bonne

$(document).ready(function() {
    $('#btnSun').click(function(){
        $(this).myFunction();
     });
     $.fn.myFunction = function() { 
        alert('hi'); 
     }
});

7voto

Daniel A. White Points 91889

Essayez ceci $('div').myFunction();

Cela devrait fonctionner

$(document).ready(function() {
 $('#btnSun').click(function(){
  myFunction();
 });

function myFunction()
{
alert('hi');
}

0 votes

Cela signifie-t-il que nous ne pouvons pas créer une fonction définie par l'utilisateur dans Jquery et l'appeler comme nous le faisons normalement ?

0 votes

Hey ça marche pour moi $('div').myFunction() ; :-). Gr8 ! Je ne sais pas si vous pouvez m'aider à comprendre ce comportement ? pourquoi nous avons besoin de $('div').myFunction()... pourquoi je ne peux pas appeler myFunction comme une fonction normale ?

0 votes

Vous l'attribuez à l'objet jQuery.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X