Я сделал это правильно?.each () & .click () jquery - PullRequest
2 голосов
/ 18 августа 2010

Я что-то не так делаю?Или есть лучший способ сделать это?

Вот мой код:

//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');
                });
            });

}

Мой главный вопрос: правильно ли я настроил щелчок и каждую функцию ... или долженЭто будет другой путь?

Также мое предупреждение не будет показывать currId.Есть ли причина, почему?

Ответы [ 2 ]

4 голосов
/ 18 августа 2010

Во-первых, вам не нужен каждый. Вы можете просто сделать:

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

Во-вторых, нет идентификатора в элементах списка, которые вы добавляете в список. Для изображений установлены идентификаторы.

Я думаю, вам нужен код, который работает примерно так:

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

    // rest of your code
});
0 голосов
/ 18 августа 2010

Если есть несколько тегов, на которые вы хотели бы кликнуть, вы должны использовать

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

});

Это более эффективно, но если у вас есть только 1 тег, на который нужно нажать (скажем,ID), тогда .click () должно быть просто отлично.

...