这是有史以来最脏的 5 分钟示例。
我将省略 CSS 和 HTML,因为它们真的无关紧要,只要您了解移动元素需要position:absolute;
并且first container with a position:anything will be the offset() container we use
.
//log each x,y coordniate into an array
var theCoords = [];
$.each($('.price'), function(i,obj){
theCoords.push({
'ele' : $(obj),
'top' : $(obj).offset().top,
'left' : $(obj).offset().left});
});
在上面,我们将一些关于我们想要捕捉到的元素的信息推送到一个数组中。我们将文字元素引用存储在“ele”的参数中。
$(window).on('scroll', function(){
$.each(theCoords, function(i, arr){
if($(window).scrollTop() > arr.top - 75){
$('#addToCart').css({
'top': arr.top
});
$('#addToCart').prop('rel', arr.ele);
}
});
});
在上面,我们捕获了窗口滚动事件,我们在每次页面滚动时迭代每个坐标。我刚刚使用了一些肮脏的数学来使示例流程以我认为可以接受的间隔进行;欢迎您更改此设置。我们用作#addToCart
我们的position:absolute
元素,每次我们根据数组评估窗口的位置时,我们都会根据与数组最接近的匹配来移动“顶部”。我们还将对“price”对象的引用推送到购物车的“rel”属性中。
$('#addToCart').click(function(){
console.log($($(this).prop('rel')).text());
});
在这里,如果您单击,您将获得我们捕捉到的 div 的文本。
希望这能让你朝着正确的方向前进。