jQuery - 刷新每个()函数

jQuery - refresh each() function

本文关键字:函数 刷新 jQuery      更新时间:2023-09-26

我对这段代码有问题:

$('#portfolio-filter a').click(function(){
    //Some conditions here to add my class 'thumbnail-view' to some div
   $('#portfolio-list').find('.project').addClass('thumbnail-view');
});
$(".thumbnail-view").each(function(j){
     $(this).click(function(){      
        alert(j);
     });
});

每次我在div id 投资组合过滤器中点击链接时,我都会在特定元素上添加类缩略图视图。当我加载页面时,我的每个函数都工作正常,但由于第一个函数,它没有考虑更改。我是否应该在每次单击 #portfolio 过滤器中的链接时刷新我的每个功能?我该怎么做?谢谢!

您可以使用

事件委派,然后使用index代替j

$(document).on("click", ".thumbnail-view", function() {
    alert($(".thumbnail-view").index(this));
});

如果要重新计算j索引,解决方案是在添加类时重做绑定。

$('#portfolio-filter a').click(function(){
    //Some conditions here to ass my class 'thumbnail-view' to some div
    $('#portfolio-list').find('.project').addClass('thumbnail-view');
    $(".thumbnail-view").off('click').each(function(j){
         $(this).on('click', function(){      
            alert(j);
         });
    });
});

另一种解决方案是使用 on 并在每次单击元素时计算索引(通过遍历所有元素并与this进行比较)。

$(".thumbnail-view").on("click",function(){      
       alert(j);
});