59 votes

jQuery passant $(this) à une fonction

J'ai des lignes de code comme ceci :

 $(this).parent().parent().children().each(function(){
    // do something
});

Ça marche bien. Mais je dois exécuter ces lignes plusieurs fois. J'ai donc créé une fonction et passé le paramètre $(this) à une fonction :

 myFunc( $(this) );

function myFunc(thisObj) {
    thisObj.parent().parent().children().each(function(){
        // do something
    });
}

Mais de cette façon, cela n'a pas fonctionné.

83voto

erimerturk Points 1998

vous pouvez vérifier ce lien.

http://jsfiddle.net/zEXrq/38/

 $("#f").click(function() {
  myFunc($(this));
})

function myFunc(thisObj) {
  thisObj.parent().parent().children().each(function() {
    alert("childs")
  });
}
 <div id="wordlist">
  <div id="a"></div>
  <div id="b">
    <div id="e"></div>
    <div id="f">child</div>
  </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

17voto

Nott Responding Points 157

jQuery invoquera automatiquement votre fonction avec le contexte approprié.

 $('#button').on('click', myFunction);

function myFunction() {
    var that = $(this);
    console.log(that);
}

2voto

Si vous travaillez en mode sans conflit (c'est-à-dire hors de portée globale), l'une des possibilités est :

 jQuery.noConflict();

(function ($) {
    $('#button').on('click', myFunction);
}(jQuery));

// or
jQuery('#button').on('click', myFunction);

function myFunction() {
    var that = jQuery(this);
    console.log(that);
}

-1voto

Shaun O'Toole Points 1

Vous pouvez passer l'identifiant à la fonction. Avec votre boucle à l'intérieur de la fonction.

 myFunc(this.id);

function myFunc(thisid) {
    $("#" + thisid).parent().parent().children().each(function(){
        // do something
    });
}

Je ferais normalement la boucle en dehors de la fonction comme ci-dessous:

 $(this).parent().parent().children().each(function(){
    myFunc(this.id)
});

function myFunc(thisid) {

    // do something example
   $("#" + thisid).html("Yay, i changed the html for element: " + thisid);
}

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