addClass仅用于没有特定类别或ID的特定元素
问题描述:
布鲁斯如何布莱恩?addClass仅用于没有特定类别或ID的特定元素
我有一个要添加一个类元素码当用户滚动页面的元素位置,我用这个代码:
$(window).on('scroll',function(){
Scroll = $(this).scrollTop();
if(Scroll >= $('img').position().top)
$('img').addClass('rotate');
});
而且我的HTML代码是这样的:
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
现在,当我运行代码时,rotate
类适用于所有img
标记。但我想将rotate
类添加到具有我在js if
句子中说过的条件的元素!
现在我该怎么办?你也可以看到jsfiddle!
答
循环到所有img
和使用$(this)
添加类
$(window).on('scroll',function(){
Scroll = $(this).scrollTop();
$('img').each(function(){
if(Scroll >= $(this).position().top)
$(this).addClass('rotate');
});
});
答
您可以使用jQuery的filter
只得到一个适合您的需求,像图像标签:
Scroll = $(this).scrollTop();
$('img').filter(function(index, el) {
return Scroll >= el.position.top();
}).addClass('rotate');
答
如果更换您的声明与此
$('img').each(function(index) {
if(Scroll >= $(this).position().top)
$(this).addClass('rotate');
});
+0
非常感谢:) – JustCauseWhat
答
$(window).on('scroll', function() {
Scroll = $(this).scrollTop();
$('img').each(function() {
if (Scroll >= $(this).position().top)
$(this).addClass('rotate');
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
<div class="some-class">
<img src="http://blog.majidkn.com/wp-content/themes/majidkn2/images/mkn.png" class="feature-size">
</div>
迭代通过每幅图像,然后使用this
方面告诉当前图像
感谢很多:)但我认为这并没有为我工作: - ??你能解释一下吗? – JustCauseWhat