我做得好吗? .each()& .click()jquery

时间:2010-08-18 18:07:18

标签: jquery function foreach

我做错了吗?或者有更好的方法吗?

这是我的代码:

//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 个答案:

答案 0 :(得分:4)

首先,你不需要每一个。你可以这样做:

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

其次,您要添加到列表中的列表项上没有ID。这是设置了ID的图像。

我认为你想要的代码类似于:

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

    // rest of your code
});

答案 1 :(得分:0)

如果您希望能够点击多个标记,则应使用

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

});

效率更高,但如果你只有1个标签需要能够点击(比如说ID),那么.click()应该没问题。