如何跟踪元素移动和特定位置的触发功能
How to track element movement and trigger function at specific spot?
我有一个 #ball,当点击时,使用jquery animate使用以下代码向下移动210px:
$('#ball').click(function() {
$(this).animate({
top: '+=210px'
}, 500);
setTimeout(crack, 400);
});
目前我使用超时来触发下一个函数,即"破解"。相反,我想跟踪 #ball 的移动,当它的 css top = 210px 时,我想触发函数 crack(),我该怎么做?
我在一篇有点类似的帖子中看到,Step 函数可能是我正在寻找的,但我不确定如何根据 http://api.jquery.com/animate/提供的信息处理该解决方案
查看演示:http://jsfiddle.net/EnigmaMaster/hbvev/4/
如果您知道球会在210px
到达禁区,我不确定为什么要使用追踪器。
如果你想摆脱 setTimeout,那么使用 .animate
回调函数,当球到达盒子时将调用该函数。
$('#ball').click(function() {
$(this).animate({
top: '+=210px'
}, 500, crack); //<== crack will be called after ball animation
});
演示
如果您想在球接触盒子时调用破解并且仍然继续盒子的移动,那么您可以执行它 2 步,如下所示,
$('#ball').click(function() {
$(this).animate({
top: '+=180px'
}, 400, function() {
crack();
$(this).animate({
top: '+=30px'
}, 100);
});
});
另请查看此版本以慢动作 http://jsfiddle.net/skram/hbvev/8/获得乐趣
如果你真的想根据球的位置做点什么,那么是的,step
可能是最好的方法:
$('#ball').click(function() {
$(this).animate({
top: '+=210px'
}, {
duration: 500,
step: function() {
if($(this).offset().top > 208) {
crack();
}
}
});
});
演示:http://jsfiddle.net/qJjnN/1/
现在,有几个警告:
- 可能会有性能影响。
- 每一步的位置不一定是整数,对象也不会存在于开始和停止位置之间的每个像素处。
-
step
不会在最终位置上调用,因此您实际上无法检查它是否是最终位置210
。
记住这些,您将无法检查 210px 的确切位置。 相反,您需要观察它何时经过某个位置,并且仅在该点触发crack
,而不是之后的每个点:
$('#ball').click(function() {
var cracked = false;
$(this).animate({
top: '+=210px'
}, {
duration: 500,
step: function() {
if($(this).offset().top > 208 && !cracked) {
cracked = true;
crack();
}
}
});
});
演示:http://jsfiddle.net/qJjnN/2/
step
函数还具有参数now
和fx
,可用于查看正在动画的 css 的当前值。 对于要进行动画处理的每个 css 属性的每个步骤,都会调用step
。 因此,您必须小心使用这些属性,因为您需要查看fx
以查看您正在查看的属性值(如果您要对多个属性值进行动画处理,即 top
和left
)。
$('#ball').click(function() {
var cracked = false;
$(this).animate({
top: '+=210px'
}, {
duration: 500,
step: function(now, fx) {
if(fx.prop != 'top') {
return;
}
if(now > 208 && !cracked) {
cracked = true;
crack();
}
}
});
});
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 如何在jquerymobile中同时放置两个定位的经纬度位置
- Javascript / 根据一个元素的位置定位另一个元素
- 如何定位“隐藏”的 iframe?(应用程序:链接到嵌入“隐藏的海报图像”嵌入的 Youtube 视频的起始位置)
- 与位置的相对定位:绝对
- 在没有“位置”属性的情况下实现绝对定位,使用边距/填充
- 用于相对于用户在约束内单击的位置定位框的数学公式
- 运行地理位置定位的 js 文件
- 如果定位服务关闭,英特尔 XDK 地理位置将找不到纬度/经度
- 在 iPad 上绝对定位不会将元素设置在所需位置
- 如何使用 jQuery 计算相对定位元素的绝对位置*没有*
- 如果php返回位置头,我如何在jquery ajax中定位页面
- 试着根据父母的位置来定位孩子
- 地理定位api没有给出准确的用户位置
- 定位父元素,使子元素处于完全相同的位置
- 如何在Javascript/Mootools中根据页面上不同对象的位置定位箭头
- 使用javascript查找元素相对于最近相对定位的父元素的位置
- 多个谷歌位置请求功能(药房定位器)
- 点击html5地理定位当前位置,然后减去两点