0
votes

jQuery: comment puis-je utiliser le sélecteur $ (this) entre plusieurs fichiers?

J'ai un fichier "A" avec

function myFunction() {
    $(this).hide();
};

et un fichier "B" avec

$('.myClass').mouseover(function() {
    myFunction();
});

Cela ne fonctionne pas car $(this) n'est pas défini.

Existe-t-il un moyen de transmettre le sélecteur $(this) à plusieurs fichiers?


2 commentaires

pourquoi pas $('.myClass').mouseover(myFunction) ?


@Transamunos ça ne marche pas


3 Réponses :


0
votes

La solution la plus rapide et la plus simple à laquelle je puisse penser:

$('.myClass').mouseover(function(e) {
    myFunction(e.target);
});

function myFunction(element) {
    $(element).hide();
};

Étant donné que this intérieur de myFunction() renverrait l'objet Window, je passerais l'élément recueilli à partir de l'événement jQuery ( e.target ) et le placerais dans une fonction jQuery dans myFunction() . Avec cela, vous pouvez manipuler l'élément exact sur lequel l'événement a été déclenché.


0 commentaires

0
votes

déposer un

function myFunction(element) {
    element.hide();
};

fichier B

$('.myClass').mouseover(function() {
    myFunction($(this));
});


0 commentaires

0
votes

Vous pouvez soit référencer la méthode directement, soit utiliserapply () ou call ()

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myClass">1</div>
<div class="myClass">2</div>
<div class="myClass">3</div>
.active { color: red;}
.foo { background-color: yellow;}
function myFunction() {
    $(this).toggleClass('active');
};


function myFunction2() {
    $(this).toggleClass('foo');
};

$('.myClass').mouseover(myFunction);


$('.myClass').mouseover(function () {
  myFunction2.apply(this);
});


0 commentaires