有没有办法检测元素当前是否位于div中?
我有滚动垂直菜单。我设置导航div的高度然后溢出:隐藏所以我一次只能看到一些链接。
因此,我单击导航底部的图形以向下移动链接。我在顶部有另一个图形以产生相反的效果。
但是,我找不到停止动画的可靠方法。因此,运动一直在超越第一个和最后一个菜单链接。
看到问题答案 0 :(得分:2)
单击按钮时,需要测试div#content上边距的当前值。因此,例如,顶部按钮的动画应该仅在div#content margin-top小于0时播放,而当margin-top大于-500时底部按钮的动画才会播放。
答案 1 :(得分:1)
为了回答你的问题,jQuery提供了用于检测的:has
help伪选择器。看起来像
if( $('div:has(span)').length ) { } // true if a div contains a `<span>` node.
但我不认为这是你的问题。要可靠地停止动画,您只需拨打.stop()
help
可能喜欢
$('div').stop(true,true).animate() // ...
参数告诉jQuery,清除当前的 fx队列并跳转到最后。
另一种避免多次执行异步效果的技术是调用:animated
help伪选择器。有了这个,你可以检测,如果一个元素当前是动画的,如果是,不做任何事。
if( $('div').is(':animated') ) { } // div is currently animated
答案 2 :(得分:0)
试试这个:
if ( $('#myElement').closest('div').length > 0 ) {
// yup, I'm inside a DIV
}
您还可以在.closest()
函数中插入正确的jQuery选择器。因此,要检查元素是否在我的可滚动DIV中,您可以使用:
$('#myElement').closest('div#myScrollableDiv').length > 0