This question already has answers here:
Get an element by index in jQuery
                            
                                (5个答案)
                            
                    
                5年前关闭。
        

    

我正在尝试为具有特定类的第一个元素设置.click函数-每个函数都需要单独的代码,递增我的purchase函数,第一个使用purchase(0,0,1);,第二个使用purchase(0,1,1);并且等等。在使用$(".generation:first")(将其称为类)的方式工作的同时,我希望能够对此类中的所有元素执行此操作,并从数组中引用它们,并且出于某种原因

$(".generation")[0].click(function () { purchase(0,0,1); });


不起作用-没有错误或其他任何内容。它似乎没有选择它。稍后相同:

// Note: listings is an array of three different classes, 0 is .generation
// Therefore, 'listings[0][0]' should be identical to '$(".generation")[0]'
listings[0][0].find(".count").text(game.buildings[type][id].count+" bought");


上面的将不起作用,指出undefined is not a function,如果我使用.children(".count"),它会改为object is not a function

最佳答案

您使用.eq(0)获取jQuery对象中的第一个元素。 [0]只是为您提供了第一个DOM对象,该对象显然不支持添加事件处理程序的jQuery .click()方法。因此,您可以这样做:

$(".generation").eq(0).click(function () { purchase(0,0,1); });




现在,如果您希望每个.generation元素的功能稍有不同(如注释所示),则可以使用.each()进行迭代,并对每个元素进行一些稍有不同的操作。

$(".generation").each(function(index) {
    $(this).click(function() {
        purchase(0, index, 1);
    });
});

07-24 09:39
查看更多