我对动态生成的网页和JQuery项目的个人学习项目的第一个实现是使用复选框和toggle(“ slow”)和toggle(“ fast”)。但是,对于CS来说,这是新手,所以对我的第一个项目来说,管理复选框的状态变得有点复杂。所以我只用<label>切换到.on('click', function(){...})$('*').click(function(){...}).toggleClass('hidden')来处理我的用户体验。隐藏类的CSS是:

.hidden {
    display: none;
}


现在的问题是类的切换是瞬时发生的,我希望用户能够像.toggle().toggle('slow')一样看到.toggle('fast')。我将如何转换以下行以实现此视觉反馈?

$(this).toggleClass('hidden');


我已经查看了toggle,toggleClass和slideToggle的API,并好奇是否可以使用某种组合。如果我必须将其重写为toggle(),我该如何包含showOrHide参数以及“ show”或“ fast”持续时间,因为我需要验证当前状态,类似于.toggleClass()的[switch]参数。

最佳答案

您无法为添加或删除类设置动画效果-类是否存在。 .toggle('fast')效果是通过在隐藏元素之前对元素的特定CSS属性进行动画处理来产生的。


  “如果我必须将其重写为toggle(),那么我需要如何包含showOrHide参数以及“显示”或“快速”持续时间,因为我需要验证当前状态,类似于.toggleClass()'s [switch]参数。”


由于当前没有这样的.toggle()版本:

$(this).toggle('fast', showOrHide)


...您可以改为执行以下操作:

$(this)[showOrHide ? "show" : "hide"]('fast');


...这是一种简短的说法:

if (showOrHide)
   $(this).show('fast');
else
   $(this).hide('fast');


如果要在显示/隐藏完成时运行回调函数,则:

$(this)[showOrHide ? "show" : "hide"]('fast', function() { ... });

关于javascript - 使用动画将toggleClass('hidden')转换为.toggle(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11642979/

10-10 23:57