2 votes

Ai-je bien fait cela ? .each() & .click() jquery

Est-ce que je fais quelque chose de mal ? Ou existe-t-il une meilleure façon de procéder ?

Voici le code que j'ai :

//Create as many li's as needed
for(var t = 1; t <= pageLimit; t++) {
        if (t <= 9) {
            $('ul.thumb-list').append('<li><p>PAGE ' + t + '</p><img id="' + t + '" src="../jpeg/thumbnails/0' + t + '.jpg" /></li>'); 
        } else if (t >=10) {
            $('ul.thumb-list').append('<li><p>PAGE ' + t + '</p><img id="' + t + '" src="../jpeg/thumbnails/' + t + '.jpg" /></li>'); 
        }

        // for each li that gets click, produce a click function that will get its id               
        $('ul.thumb-list li').each(function() {
                $(this).click(function() {
                    var currId = $(this).attr('id');

                    //Testing to see if it is right
                    alert('currId is: ' + currId);

                    if(currId <=9){
                        $('#page' + currId).empty();
                        $('#page' + currId).append('<img class="touch" src="../jpeg/pages/0' + currId + '.jpg"/>');
                    } else if (currId >=10) {
                        $('#page' + currId).empty();
                        $('#page' + currId).append('<img class="touch" src="../jpeg/pages/' + currId + '.jpg"/>');
                    }

                    jQT.goTo($('#page' + currId), 'slide');
                });
            });

}

Ma principale question est de savoir si j'ai configuré correctement la fonction "click and each" ou s'il faut procéder autrement ?

De plus, mon alerte n'affiche pas le CurrentId. Y a-t-il une raison à cela ?

4voto

Justin Niessner Points 144953

Tout d'abord, vous n'avez pas besoin de chacun. Vous pouvez simplement faire :

$('ul.thumb-list li').click(function(){
    // function body
});

Deuxièmement, il n'y a pas d'ID sur les éléments de la liste que vous ajoutez à la liste. Ce sont les images qui ont leur ID défini.

Je pense que vous voulez un code qui fonctionne comme suit :

$('ul.thumb-list li').click(function(){
    var currId = $('img', this).attr('id');
    alert('currId is: ' + currId);

    // rest of your code
});

0voto

MoDFoX Points 761

Si vous souhaitez pouvoir cliquer sur plusieurs balises, vous devez utiliser la fonction

$('tag').live('click', function(){

});

C'est plus efficace, mais si vous n'avez qu'une seule balise qui doit pouvoir être cliquée (disons un ID), .click() devrait suffire.

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