【发布时间】:2016-06-09 12:19:12
【问题描述】:
我正在尝试将 x 类和 y 类添加到角度服务/指令中的元素(它必须在脚本中,而不是通过 ng-class)。顺序很关键 - 我希望先添加 x,然后再添加 y - 它需要 2 个步骤。
我确信这会奏效:
$(element).addClass('x');
$timeout(function () {
$(element).addClass('y');
},0)
但事实证明,有时它并不一致,并且 y 被添加到 x 之前。我认为$timeout 将保证一个 2 步过程 - 但我在问是否有另一种方法来保证它。可能是 DOM 元素上的“onload”或“onupdateClass”事件,我不知道它是否存在?
澄清: 最终它是“x y”还是“y x”并不重要。字符串顺序并不重要。重要的是顺序:先添加x,等待添加,然后添加y
【问题讨论】:
-
$timeout在这里没有任何意义...一定有其他原因导致问题... -
那
$(element).addClass('x y');怎么了???无论如何,看起来像一个XY问题。也许只是在您调用 sn-p 之前添加了您的y类,通过其他方式。仍然不确定为什么订单很关键?!要在调用 sn-p 时获取特定命令,您可以使用:$(element).removeClass('x y').addClass('x y'); -
$(element).addClass('x').addClass('y');如果你不想使用$(element).addClass('x y'); -
我正在尝试从 {display none;不透明度:0} 到 {display:block;不透明度:1}。它需要 2 个步骤: 1. 添加显示:块;不透明度 0; 2添加不透明度:1.如果我一步添加它,动画将不起作用
-
@MartijnK 但这与将两个类传递给
addClass()方法具有完全相同的行为
标签: javascript jquery angularjs dom