else { if (!transitionEnd || isIE()) { setTimeout(function(){ showBars(); }, 1000); } else { $('.details').bind(transitionEnd, function() { $(this).unbind(transitionEnd); //Chrome has another bug, it doesn't read new css rules after transitionEnd setTimeout(showBars, 0); }); } }
时间: 2024-02-10 20:27:55 浏览: 157
这段代码是一个条件语句的分支,用于处理当 `$('.splash .details')` 元素可见时的情况。
```javascript
else {
if (!transitionEnd || isIE()) {
setTimeout(function(){
showBars();
}, 1000);
} else {
$('.details').bind(transitionEnd, function() {
$(this).unbind(transitionEnd);
//Chrome has another bug, it doesn't read new css rules after transitionEnd
setTimeout(showBars, 0);
});
}
}
```
这段代码的逻辑如下:
- 首先,它检查两个条件:
- `!transitionEnd`:检查变量 `transitionEnd` 是否为假值(未定义、null、false、0 或空字符串)。如果是假值,则表示当前浏览器不支持过渡事件。
- `isIE()`:调用 `isIE()` 函数来检查当前浏览器是否为 IE 浏览器。
- 如果以上任一条件为真,则执行以下代码块:
- `setTimeout(function(){ showBars(); }, 1000);`:延迟 1000 毫秒后调用 `showBars()` 函数。
- 如果以上两个条件都为假,则执行以下代码块:
- `$('.details').bind(transitionEnd, function() { ... });`:为 `$('.details')` 元素绑定一个过渡事件的处理函数。
- 在过渡事件触发后,执行以下代码:
- `$(this).unbind(transitionEnd);`:解绑过渡事件处理函数,以防止重复触发。
- `setTimeout(showBars, 0);`:延迟 0 毫秒后调用 `showBars()` 函数。这里使用延迟是为了解决 Chrome 浏览器在过渡结束后不读取新的 CSS 规则的 bug。
这段代码的目的是在 `$('.splash .details')` 元素可见时执行一系列操作,具体操作根据浏览器是否支持过渡事件来决定。如果不支持过渡事件或者是 IE 浏览器,使用延迟来调用 `showBars()` 函数。否则,绑定过渡事件处理函数,并在过渡事件结束后延迟调用 `showBars()` 函数。
阅读全文