处理带有 JS 中隐藏元素的行 + 列 (html)
Handling rows + cols (html) with hidden elements in JS
关于我的最后一个问题:在n个元素后自动添加行(Jquery)
它按预期工作,但我还有最后一件事必须在重绘过程中修复或管理。
打开网站将导致显示所有元素,如下所示:
<div class="w-col w-col-4 entry allfirewalls trobi Test">
<div class="w-col w-col-4 entry allfirewalls trobi">
<div class="w-col w-col-4 entry Komplett was neues">
<div class="w-col w-col-4 entry trobi neu">
你们在那里帮助我弄清楚如何将 3 个div 包装成 1 行,我意识到了这一点:
function handleRows() {
var divs = $(".galrows.w-row > .w-col").
for (var i = 0; i < divs.length; i += 3) {
divs.slice(i, i + 3).wrapAll("<div class='w-row'></div>");
}
}
我之前没有提到的一点:点击过滤器(pure JS
而不是ajax
)后,一些元素被隐藏
<div class="w-row">
<div class="w-col w-col-4 entry abc def">
<div class="w-col w-col-4 entry abc 123">
<div class="w-col w-col-4 entry 1234" style="display: none;">
</div>
<div class="w-row">
<div class="w-col w-col-4 entry new_filter">
<a href="/referenzseiten/mein-beispiel/">
<div>
</diV
您可能已经弄清楚问题所在:元素样式为"display: none"的项目不应该在这一行中,现在看起来有点像这样:
| x | x | |
| x | | |
(其中 x = 显示的图像)
我在document.ready
部分和应用过滤器后handleRows()
调用我的函数:
$(document).ready(function() {
handleRows();
});
// later in the code
$('.entry').each(function() {
if (!$(this).hasClass(filtername)) {
$(this).fadeOut();
} else {
handleRows();
$(this).fadeIn();
}
});
希望你有一个想法。提前致谢
你应该使用 jQuery 伪选择器 :visible 从匹配的集合隐藏 DIV 中过滤掉:
var divs = $(".galrows.w-row > .w-col:visible")
但请注意fadeOut()
和fadeIn()
方法异步工作(又名),可能会给您带来意外的行为(可能使用各自的回调)。如果不在线检查相关样本,很难说。
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素