2010-08-18 5 views
2

Est-ce que je fais quelque chose de mal? Ou y a-t-il une meilleure façon de faire cela?Est-ce que je l'ai fait correctement? .each() & .click() jquery

Ce code je:

//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 question principale est que je ne mis en place le clic et chaque fonction correctement .. ou faut-il une autre façon?

Aussi mon alerte n'affichera pas le currId. Y a-t-il une raison pour laquelle?

Répondre

4

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 aucun ID sur les éléments de liste que vous ajoutez à la liste. Ce sont les images qui ont leurs ID définis.

Je pense que vous voulez code qui fonctionne quelque chose comme:

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

    // rest of your code 
}); 
+0

Elle sélectionne tous les 'li' mais devrait aller aux enfants' img' pour obtenir le 'id', en supposant que je lis son HTML correctement. –

+0

Ahh merci! Je savais qu'il y avait quelque chose de mal .. Im nouveau à jquery, merci pour l'aide – cat

0

S'il y a plusieurs balises que vous souhaitez être en mesure de cliquer, vous devez utiliser

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

}); 

Il est plus efficace, mais si vous avez seulement 1 tag qui doit être capable de cliquer (dire un ID) alors .click() devrait être très bien.