javascript - 如何防止 transitionend 事件被运行两次

标签 javascript jquery css

我有一个小应用程序,它使用 CSS3 添加和删除 .is-active 动画部分,我需要从中删除 .is-active元素 .resulting-page 然后在 transitionend 上将 .is-active 添加回元素,因为我需要快速更新 z-index ,但是这样做似乎会触发 transitionend 函数中的代码两次。想知道是否有人可以就如何解决此问题提出建议?

JS

$('.resulting-page').removeClass('is-active').on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function () {              
      $('.search-page').removeClass('tier3-override');
      $(this).addClass('is-active');
      console.log('this ran');  
});

JS fiddle http://jsfiddle.net/kyllle/aagTH/16/

最佳答案

您可以使用 Modernizr 获取浏览器特定的过渡结束。如果同时应用,Chrome 将在 transitionend 和 webkitTransitionEnd 上触发。

var transEndEventNames = {
        'WebkitTransition': 'webkitTransitionEnd',  // Saf 6, Android Browser
        'MozTransition': 'transitionend',           // only for FF < 15
        'transition': 'transitionend'               // IE10, Opera, Chrome, FF 15+, Saf 7+
    },
    transEndEventName = transEndEventNames[Modernizr.prefixed('transition')];

return transEndEventName;

关于javascript - 如何防止 transitionend 事件被运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689774/

相关文章:

javascript - Rangy.js - 具有多个类的 createClassApplier

css - 在一组 CSS 伪类之后添加换行符

html - 为什么当我将 CSS 放在外部文件而不是 &lt;header&gt; 标签内时它会停止工作?

javascript - 使用该行中的变量在每个表格行之后插入 HTML

javascript - 通过 javascript 将 TR 附加到表的最简单方法是什么?

java - 元素无法使用文本-selenium webdriver 定位

javascript - 如何使用 JQuery 为所有具有特定类的 div 分配唯一 ID

jquery - 为什么 jQuery 在 $.ajax 成功回调中吞掉异常?

javascript - 在实时 Web 应用程序上公开 sourcemap 的安全问题

javascript - Google api javascript 客户端有时可以工作,有时则未定义