块中的第二个语句$next.addclass(type).offsetWidth
既不是对函数的调用,也不是对赋值的调用。
if (transition)
{
$next.addClass(type);
$next[0].offsetWidth;
}
else
{
$active.removeClass('active');
$next.addClass('active');
}
这里的逻辑是什么?
答案 0 :(得分:1)
offsetWidth
是必须计算的度量属性,访问它将导致DOM reflow。这是读取未使用值的唯一可能用途。否则它只是死代码。
代码应该是:
if (transition) {
$next.addClass(type);
forceDomReflowFrom($next[0]);
} else {
$active.removeClass('active');
$next.addClass('active');
}
function forceDomReflowFrom(el) {
el.offsetWidth;
}
这是另一个related question,其中此方法用于强制浏览器重排(否则CSS动画将无效)。