如果它属于div

时间:2011-03-31 08:56:41

标签: jquery css scroll

有没有办法检测元素当前是否位于div中?

我有滚动垂直菜单。我设置导航div的高度然后溢出:隐藏所以我一次只能看到一些链接。

因此,我单击导航底部的图形以向下移动链接。我在顶部有另一个图形以产生相反的效果。

但是,我找不到停止动画的可靠方法。因此,运动一直在超越第一个和最后一个菜单链接。

您可以在http://test2omniforce.co.uk/test

看到问题

3 个答案:

答案 0 :(得分:2)

单击按钮时,需要测试div#content上边距的当前值。因此,例如,顶部按钮的动画应该仅在div#content margin-top小于0时播放,而当margin-top大于-500时底部按钮的动画才会播放。

答案 1 :(得分:1)

为了回答你的问题,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

答案 2 :(得分:0)

试试这个:

if ( $('#myElement').closest('div').length > 0 ) {
    // yup, I'm inside a DIV
}

您还可以在.closest()函数中插入正确的jQuery选择器。因此,要检查元素是否在我的可滚动DIV中,您可以使用:

$('#myElement').closest('div#myScrollableDiv').length > 0