addClass到数组中多个元素的第一个子节点

时间:2017-12-28 17:25:23

标签: javascript jquery

我有数组元素,我想将一个函数应用于此数组中的每个元素,该类将.active类添加到第一个子元素。目前我收到了错误

'Uncaught TypeError: projectImage.forEach is not a function'

这有什么问题?非常感谢任何帮助指针

var Image = {
    init: function() {
        Image.setupImages();
    },
    setupImages: function() {
        var projectImage = $('.project-img');
        projectImage.forEach(function(project) {
            project.find('.project-thumnbail').eq(0).addClass('active');
        });
    },
}
$(document).ready(function() {
    Image.init();
});
.project-thumbnail {
    visibility: hidden;
}
.active {
    visibility: visible;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="project-img">
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/000000">
    </div>
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/000000">
    </div>
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/000000">
    </div>
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/000000">
    </div>
</div>

<div class="project-img">
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/ffffff/000000">
    </div>
    <div class="project-thumbnail">
        <img src="http://via.placeholder.com/250/ffffff/000000">
    </div>
</div>

3 个答案:

答案 0 :(得分:3)

正如错误试图告诉你的那样,jQuery没有forEach函数。

你可能意味着.each() 此外,它传递元素,而不是jQuery对象。

请参阅文档。

答案 1 :(得分:1)

forEach替换为.each(),如:

var projectImage = $('.project-img');
projectImage.each(function() {
    $(this).find('project-thumnbail:eq(0)').addClass('active');
});

因为projectImage是jQuery对象而不是JS数组,forEach是数组方法。

答案 2 :(得分:0)

var projectImage = $('.project-img');

给出jQuery个对象。 forEach()不是jQuery对象上的函数,只是在vanilla上。

使用forEach()代替each(),而jQuery是等效的。

projectImage.each(element => { console.log('do something'); });