分离后重新追加到DOM中
Appending back in to the DOM after detaching
我有一个典型的 html结构
<li>
<div class="holder">
<img src="imgSrc" class="masterImage" height="200" width="100">
</div>
</li>
高度不同,是砖石结构的布局。
我想做的是,当页面滚动并离开视口时,将图像从DOM中分离出来,然后当它再次或第一次进入视口时重新附加它。
发生的事情是,图像分离正常,但没有重新连接
这是JQuery库代码:
(function($) {
$.belowthefold = function(element, settings) {
var fold = $(window).height() + $(window).scrollTop();
return fold <= $(element).offset().top - settings.threshold;
};
$.abovethetop = function(element, settings) {
var top = $(window).scrollTop();
return top >= $(element).offset().top + $(element).height() - settings.threshold;
};
$.inviewport = function(element, settings) {
return !$.rightofscreen(element, settings) && !$.leftofscreen(element, settings) && !$.belowthefold(element, settings) && !$.abovethetop(element, settings);
};
$.extend($.expr[':'], {
"below-the-fold": function(a, i, m) {
return $.belowthefold(a, {threshold : 0});
},
"above-the-top": function(a, i, m) {
return $.abovethetop(a, {threshold : 0});
},
"in-viewport": function(a, i, m) {
return $.inviewport(a, {threshold : 0});
}
});
})(jQuery);
这就是我所说的,但正如我所说,它们没有重新连接:
$(window).bind("scroll", function(event) {
$(".masterImage:below-the-fold").each(function() {
$(this).detach();
});
$(".masterImage:above-the-top").each(function() {
$(this).detach();
});
$(".masterImage:in-viewport").each(function() {
$(this).appendTo($(this).parent());
});
});
有什么想法为什么会失败吗?有更好的方法吗?
分离时,您必须实际存储对元素的引用,否则它将丢失
var elements = $(".masterImage:below-the-fold").detach();
// stuff
$('body').append(elements);
我将把如何将其与那些伪选择器结合起来留给您。
另一个问题是,一旦分离了一个元素,它就不再在DOM中,因此它没有父级,所以$(this).parent()
什么都不做。
似乎隐藏和显示元素而不是从DOM中删除元素会容易很多?
相关文章:
- Jasmine-无法将元素追加到DOM
- Chrome DOM 未针对 jQuery 追加/淡入进行更新
- 这两种使用 jQuery 追加 DOM 元素的方法有什么不同
- 使用javascript追加到DOM
- 无法与使用 jquery 追加添加的 dom 对象进行交互
- 将字符串转换为 jquery 元素并将其追加到 DOM 中
- 高性能追加到现有 DOM 元素的数组
- 使用Javascript/jQuery将已存在的元素追加到DOM中
- 在DOM中删除和追加
- 分离后重新追加到DOM中
- Chrome扩展:将元素追加到DOM中没有立即出现的新注入的元素中
- 倾听DOM的追加
- 通过DOM中的javascript追加script标记并设置其src会引发错误
- JQuery中动态创建的元素不断追加到DOM
- 如何在昂贵的计算任务之前单击将文本追加到DOM
- 查找,替换和追加新的dom元素
- 如何使用Jquery或Javascript瞄准追加元素,或者如何将追加元素添加到DOM中
- jQuery.车把模板不渲染动态DOM追加
- 实时数据绘制性能HTML5画布vs Dom追加
- JS DOM追加子项不起作用