如果元素翻译3d ... addClass

时间:2017-07-28 11:57:52

标签: jquery setinterval detect translate3d

如何编写执行此操作的脚本?

如果div类“test”具有属性translate3d (0px, 100px, 0px),则将“active”类添加到此处,否则将其删除。

我试过这样的事情,但这不对......

setInterval(function(){
  if($('.test').css('transform') == 'translate3d(0px, 100px, 0px)') {
    $('.test').addClass('active');
  } else {
    $('.test').removeClass('active');
  }
}, 1);

1 个答案:

答案 0 :(得分:2)

您需要使用正则表达式匹配,如下所示: -



$(document).ready(function(){
  $('.test').each(function(){
    console.log($(this).css('transform') == 'matrix(1, 0, 0, 1, 0, 100)');
    if($(this).css('transform') == "matrix(1, 0, 0, 1, 0, 100)"){
      $(this).addClass('active');
    } else {
      $(this).removeClass('active');
    }
  });
});

.active {
  color: red;
  font-size: 20px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test" style="transform:translate3d(0px, 100px, 0px)">Hello</div><br/><br/>
<div class="test" style="transform:translate3d(10px, 10px, 100px)">Hello</div>
&#13;
&#13;
&#13;

注意: - 检查console.log()值,您会看到它是一个矩阵

参考文献: - Get translate3d values of a div?

要检查任何元素是否具有transform属性,请使用以下正则表达式: -

/matrix(?:(3d)\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))(?:, (\d+)), \d+\)|\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))\))/)