J'ai deux fonctions JavaScript que je veux appeler depuis l'intérieur d'une fonction jQuery. Parce que je charge des images dynamiquement, je veux vérifier la largeur de chaque image en appelant les deux fonctions func1() et func2() qui vérifieront la largeur.

If width < 20px then double width

Je ne veux pas attendre que les images se chargent complètement, puis faites la vérification.

J'ai essayé mais ça n'a pas marché

$(document).ready(function ()
{
    $('img').each(function()
    {
       ....
    })

    func1();
    func2();
})

function func1()
{
   ....
}

function func2()
{
   ....
}

Qu'est-ce que je rate?

2
Jonas 18 déc. 2011 à 17:53

3 réponses

Meilleure réponse

À moins que les balises img aient la largeur spécifiée, vous ne pourrez pas obtenir correctement la largeur avant qu'elle ne soit complètement chargée. Le navigateur n'a aucun moyen de savoir quelles sont les dimensions tant qu'il n'a pas l'image entière.

Voici une façon d'attendre que les images soient chargées:

Manière officielle de demander à jQuery d'attendre que toutes les images soient chargées avant d'exécuter quelque chose

1
Community 23 mai 2017 à 10:34

J'ai eu un problème similaire à votre problème. Je pense que vous devez déplacer vos fonctions dans le bloc jquery.

$(document).ready(function() {
    function1 () {
       ...       
    }
    function2 () {
       ... 
    }
});

Sinon, je ne pense pas qu'ils puissent être appelés depuis l'intérieur de jQuery. Testez-le et informez-moi du résultat.

0
Mohammad Saberi 18 déc. 2011 à 14:31

Vous pouvez changer cela:

$(document).ready(function ()

Pour ça:

$(window).load(function ()

Pour vous assurer que toutes les images sont chargées.


Une autre option serait de lier les load gestionnaires aux images elles-mêmes, mais il peut y avoir des problèmes si les images sont mises en cache.

$('img').load(function() {
    func1();
    func2();
});

Vous devez noter que cela appellera les fonctions une fois pour chaque image , ce qui peut signifier que vous devrez modifier le fonctionnement des fonctions. Comme s'ils recevaient l'image individuelle comme argument.

0
RightSaidFred 18 déc. 2011 à 14:37