此代码可以很好地创建平滑滚动到我页面上的下一个锚点。
<script type="text/javascript">
$("#blockTwo").on("click", ".child", function( e ) {
$('html, body').delay(800).animate({
scrollTop: $('#scrollThree').offset().top
}, 1500, "swing");
});
</script>
但是,因为在click事件之后通过ajax加载了anchor元素中的内容,所以动画在中途跳跃。我想我可以通过向动画添加延迟来环绕这个问题,以便在动画开始之前加载内容。不确定这是一个好主意还是可行?
由于
答案 0 :(得分:0)
您必须将事件监听器放在父级上,并在元素通过ajax
放置在页面上后将其冒泡。
注意on()
的第二个参数:
$(".parentElement").on("click", ".child", function( e ) {
因此,对于您的具体示例:
$("#blockOne").on("click", ".child", function( e ) {
这样,当.click
通过ajax加载时,它将由其静态父#blockOne
提供一个监听器。希望这是有道理的。