【发布时间】:2011-03-31 17:25:08
【问题描述】:
有没有办法检测元素当前是否位于 div 中?
我有滚动垂直菜单。我设置了导航 div 的高度,然后溢出:隐藏,所以我一次只能看到几个链接。
因此,我单击导航底部的图形以将链接向下移动。我在顶部有另一个图形以获得相反的效果。
但是,我找不到停止动画的可靠方法。所以这个动作一直在第一个和最后一个菜单链接之前进行。
你可以在http://test2omniforce.co.uk/test看到问题
【问题讨论】:
有没有办法检测元素当前是否位于 div 中?
我有滚动垂直菜单。我设置了导航 div 的高度,然后溢出:隐藏,所以我一次只能看到几个链接。
因此,我单击导航底部的图形以将链接向下移动。我在顶部有另一个图形以获得相反的效果。
但是,我找不到停止动画的可靠方法。所以这个动作一直在第一个和最后一个菜单链接之前进行。
你可以在http://test2omniforce.co.uk/test看到问题
【问题讨论】:
您需要在单击按钮时测试 div#content 上边距的当前值。例如,顶部按钮的动画应该只在 div#content margin-top 小于 0 时播放,底部按钮的动画在 margin-top 大于 -500 时播放。
【讨论】:
为了回答你的问题,jQuery 提供了:hashelp 伪选择器用于检测。好像
if( $('div:has(span)').length ) { } // true if a div contains a `<span>` node.
但我不认为这是你的问题。要可靠地停止动画,您只需调用 .stop()help。
大概喜欢
$('div').stop(true,true).animate() // ...
参数告诉jQuery,清除当前fx队列并跳转到最后。
另一种避免多次执行异步效果的技术是调用:animatedhelp 伪选择器。这样,您可以检测元素当前是否为动画,如果是,则什么也不做。
if( $('div').is(':animated') ) { } // div is currently animated
【讨论】:
试试这个:
if ( $('#myElement').closest('div').length > 0 ) {
// yup, I'm inside a DIV
}
您还可以在.closest() 函数中插入适当的jQuery 选择器。因此,要检查一个元素是否在我的可滚动 DIV 中,您可以使用:
$('#myElement').closest('div#myScrollableDiv').length > 0
【讨论】: