繁体   English   中英

仅在某些 div 上激活自动滚动 Jquery function

[英]Activate auto scroll Jquery function only on some divs

我从教程中获取了这段代码:

( function( $ ) {
$( document ).on( 'mousewheel DOMMouseScroll', function( event ) {
 if ( ( $( '.et_pb_side_nav' ).length === 0 ) || $( 'html, body' ).is( ':animated' ) ) return;
event.preventDefault();
 var direction = event.originalEvent.wheelDelta || -event.originalEvent.detail;
var $position = $( '.et_pb_side_nav' ).find( '.active' );
var $target;
if( direction < 0 ) {
$target = $( $position ).parent().next();
} else {
$target = $( $position ).parent().prev();
}
if ( $( $target.length ) !== 0 ) {
$( $target ).children( 'a' ).trigger( "click" );
}
} );
 } )( jQuery );

仅当屏幕上可见的 Div 具有特定的 class 时,我才尝试激活此 function。 目标是确保它只在页面的某些部分而不是其他部分自动滚动。 因此,如果可见的 Div 具有 class 它会激活 function 并滚动到下一个,但如果没有,它会正常滚动。 知道我该怎么做吗?

我试过这个:

<script>
if ( $("div").hasClass("autoscroll") {
 ( function( $ ) {
 $( document ).on( 'mousewheel DOMMouseScroll', function( event ) {
if ( ( $( '.et_pb_side_nav' ).length === 0 ) || $( 'html, body' ).is( ':animated' ) ) return;
event.preventDefault();
 var direction = event.originalEvent.wheelDelta || -event.originalEvent.detail;
 var $position = $( '.et_pb_side_nav' ).find( '.active' );
var $target;
if( direction < 0 ) {
$target = $( $position ).parent().next();
} else {
 $target = $( $position ).parent().prev();
}
if ( $( $target.length ) !== 0 ) {
$( $target ).children( 'a' ).trigger( "click" );
}
} );
} )( jQuery );
}
</script>

您可以使用.each方法执行此操作。

$('.autoscroll').each(function() { //foreach element with a class of autoscroll. 
  //your code here
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM