gpt4 book ai didi

"show"动画后的 jQuery 选项卡回调

转载 作者:行者123 更新时间:2023-12-01 01:47:19 24 4
gpt4 key购买 nike

我有一个指向 jQuery UI 选项卡的链接,它需要显示该选项卡,然后将其滚动到 View 中。我的第一 react 是使用基本的 $('selector').tabs('option','active',1) 来显示它,然后将回调绑定(bind)到 tabsactivate 事件以对正文进行动画处理元素的scrollTop 到选项卡容器的偏移量。应该很简单吧?但是,当我单击链接时,页面不会滚动,除非选项卡已处于事件状态。

经过一番摸索,我发现了问题:选项卡上有一个 150 毫秒的淡入动画,并且 tabsactivate 在动画完成之前触发。所以当我尝试获取它的偏移量时,它是 0,因为选项卡实际上尚未显示。我很确定这就是原因,因为如果我删除显示/隐藏动画,它就会按预期工作。

简而言之,我的问题是,是否可以将回调绑定(bind)到内置选项卡“显示”动画,以便在动画完成之前它不会触发?

如果没有,什么是好的解决方法?

编辑:问题可能并不是我想象的那样......在下面发布代码。

代码(极其困惑且不是很优化)

<script>
$(function() {

$('.select-tab').click(function(e){
var $target = $('#'+this.href.split("#")[1]),
tabindex = $target.index('.ui-tabs-panel'),
$tabParent = $target.parents('.ui-tabs-container');
$tabParent.tabs('option','active',tabindex);
e.preventDefault();
});

$(".scroll").each(function(){
var $this = $(this),
$target = $('#'+this.href.split("#")[1]),
$tabParent = $target.parents('.ui-tabs-container'),
clickHandler;

function clickHandler(){
$('html,body').animate({"scrollTop":$target.offset().top},500,'easeOutCubic');
}

if( $this.hasClass('select-tab') && $target.hasClass('ui-tabs-panel') ){
$this.click(function(e){
if( $target.index('.ui-tabs-panel') == $tabParent.tabs('option','active') ){
clickHandler();
} else{
$(document).one('tabsactivate',$tabParent,function(e,ui){
clickHandler();
});
}
});
} else{
$this.click(clickHandler);
}
});

});
</script>

<a class="select-tab scroll" href="#ProductReviews">
Read all 36 Reviews
</a>

<div class="ui-tabs-container ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul id="product_tabs" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li class="ui-state-default ui-corner-top ui-tabs-active ui-state-active">
<a href="#RelatedProducts">Related Products</a>
</li>
<li class="ui-state-default ui-corner-top">
<a href="#ProductReviews">Product Reviews</a>
</li>
<li class="ui-state-default ui-corner-top">
<a href="#OrderWithConfidence">Order With Confidence</a>
</li>
</ul>
<div id="RelatedProducts" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
<!-- Stuff Here -->
</div>
<div id="ProductReviews" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-helper-hidden">
<!-- Stuff Here -->
</div>
<div id="OrderWithConfidence" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-helper-hidden">
<!-- Stuff Here -->
</div>

最佳答案

jQuery UI 选项卡有一个名为 activate 的方法,它会在动画完成后触发。

http://api.jqueryui.com/tabs/#event-activate

fiddle :http://jsfiddle.net/QT5Tm/

关于 "show"动画后的 jQuery 选项卡回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com