jQuery 2个淡入效果同时完成

4

再来一个快速的问题:

我注意到fadeOut在目标是什么时会有不同。这是我的结构。

页面上有多行数据,每一行都有两个图标。一个是该行的更新图标,另一个是该行的删除图标。当用户点击特定行的更新图标时,我希望更新和删除图标都淡出。因此,为了淡出用户点击的内容(更新按钮)及其相应的删除按钮,我使用以下代码...

$(this).next().add(this).fadeOut('slow');

...这种方法是可行的,但是两个元素不会同时淡出。 this 先淡出(即更新图标),然后 this.next 淡出(即删除图标)。但是如果我按名称指定这两个元素...

$('#updS2, #delS2').fadeOut('slow');

然后它们淡出在一起。为什么不同呢?

对于周五的胡言乱语,我表示抱歉。

====编辑====

还注意到使用 andSelf 函数存在延迟:

$(this).next().andSelf().fadeOut('slow');

当你说“然后”淡出时,你是指this淡出完成,然后下一个淡出开始,还是它们略微偏移,只是不太同步? - Nick Craver
1个回答

2

好的,我已经找到问题所在了。之前有一个fadeTo命令在同一事件处理程序中作用于页面上所有图标。我将代码移到fadeTo的回调函数中,现在它可以正常工作了。本应该先检查这个问题。现在我会爬回我的石头下面...

这是我正在使用的代码。我所有的图标都有一个“action”类。我想将页面上除用户单击行上的图标之外的所有图标变暗 - 我希望这些图标成为一个整体消失。这很有效。

$('.action').click(function() {
    var me = $(this);
    $('.action').not(this).fadeTo('slow', 0.2, function() {
        $(me).next().add(me).fadeOut('slow');
    }).unbind('click');
)};

我不得不使用“me”,因为如果我使用“this”,它会使所有的图标都变淡,而不仅仅是我想要的两个。可能有更好的方法来解决这个问题,但我想尝试回答这个问题,即使答案是“我一开始就搞错了”。对不起:S


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接