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?
3 Réponses :
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é.
déposer un
function myFunction(element) {
element.hide();
};
fichier B
$('.myClass').mouseover(function() {
myFunction($(this));
});
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);
});
pourquoi pas
$('.myClass').mouseover(myFunction)?@Transamunos ça ne marche pas