0

这可能很容易解决,我错过了一些明显但无法真正找到它的东西。

当我单击背景封面时,我希望 div 歌曲标题淡入背景覆盖,它工作得很好,但是当我单击 div 歌曲标题时,我希望歌曲标题淡出,这就是问题的开始。

我尝试了几种不同的方法来解决这个问题,但没有成功。问题是,当我单击歌曲标题 div 时,它会按原样淡出,但半秒钟后它又会淡入,我无法解决这个问题。

$(".backgroundcover").click(function() { 
    $(".songtitle").fadeIn("fast");
});

$(".songtitle").click(function() { 
    $(".songtitle").fadeOut("fast");
});

如果我把它改成这个,它工作得很好,但只有一次,所以我只能淡入 div 一次!

$(".backgroundcover").click(function() { 
    $(".songtitle").fadeIn("fast");
});

$(".songtitle").click(function() { 
    $(".songtitle").fadeOut({opacity : 0}, 400);
});

和 HTML:

<div class="backgroundcover">
    <div class="songtitle"><a href="#">Hejsan testar</a>Destiny's child - Unknown</div>
</div>
4

1 回答 1

1

这种行为的原因是.songtitleclick 事件的处理程序允许事件冒泡到它的父级,这导致.backgroundcover处理程序也被调用(这会使文本淡入)。

当您使用 jQuery 时,您可以通过false从处理程序返回来防止事件传播:

$(".songtitle").click(function() { 
    $(".songtitle").fadeOut({opacity : 0}, 400);
    return false;
});

您可以在此处查看一个工作示例

于 2013-01-12T15:51:48.983 回答