每个元素的高度如果高于则函数
美好的一天,我正在尝试弄清楚如何做一些小事。
我在页面上有几个元素需要检查高度以及高度是否较高,例如 > 100,那么我需要为他们调用函数。
到目前为止,我想到了这一点:
var filterHeight = $('div.class').height();
if (filterHeight > 100) {
$('div.class').css('height', '100px');
$('div.class').css('overflow-y', 'scroll');
}
正如您所知,问题在于它会将这些参数添加到所有元素,因为我严格指出了这一点。
我想我需要用 .each() 做一些事情,但是......
感谢您的建议和帮助。
因为我无法回答我自己的问题,所以我在这里更新。
我使用了你的解决方案并对其进行了一些更改,而不是添加内联 css,而是添加了获取 css 的类。
所以我所做的是:
1)当页面加载时
$('div.class').each(function() {
if ($(this).height() > 200) {
$(this).addClass('scroller');
}
});
.scroller {
height: 200px;
overflow-y: scroll !important;
}
所以它检查了所有高度超过 200px 的块并添加了类。
2) 在我调用 Ajax/JOSN 并且它为我提供了这些块的新数据之后,我需要检查这些元素的高度变化。因此,在 .ajax 完成后,我删除了类并再次检查。
complete: function () {
$('.box.refine .middle ul').removeClass('scroller')
$('.box.refine .middle ul').each(function() {
if ($(this).height() > 200) {
$(this).addClass('scroller');
}
});
}
就这样。
Good day, I'm trying to figure out how to do small thing.
I have several elements on page that needs to checked on height and if height is higher, for example > 100, then I need to call function for them.
So far I came up to this:
var filterHeight = $('div.class').height();
if (filterHeight > 100) {
$('div.class').css('height', '100px');
$('div.class').css('overflow-y', 'scroll');
}
Problem with that as you know is that it will add those params to all element because I strictly point to that.
I guess it I will need to do something with .each(), but...
Thank you for your suggestions and help.
Because I can't answer my own question I'm updating here.
I used your solution and change it a little bit, instead adding inline css I added class that fetch css.
So what I did is:
1) When page loads
$('div.class').each(function() {
if ($(this).height() > 200) {
$(this).addClass('scroller');
}
});
.scroller {
height: 200px;
overflow-y: scroll !important;
}
So it checked all blocks with height more than 200px and adds class.
2) After I'm calling for Ajax/JOSN and it gives me new data for those blocks I was in need to check for those elements heigh changes. So on .ajax complete I removed class and check again.
complete: function () {
$('.box.refine .middle ul').removeClass('scroller')
$('.box.refine .middle ul').each(function() {
if ($(this).height() > 200) {
$(this).addClass('scroller');
}
});
}
Thats all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要查看 jQuery .each()
类似的内容:
这尚未经过测试,但应该可以让您在正确的轨道上。
You need to look at jQuery .each()
Something like:
This isn't tested but should put you on the right track.
循环遍历元素并单独检查每个元素:
但是为什么不首先将其放入 css 中呢?
Loop through the elements and check each individually:
But why not just put that in the css to begin with?