其他贡献正确地指出您需要使用类而不是内联颜色,但正如 MHZ 一直在说的,这并不是所需的全部功能。悬停的问题在于它尝试测试可见性的方式不正确。考虑可见性的原始测试:
if($(".webpopup,.phonepopup").is(":hidden")){
$("tr").hover(function(){
$(this).toggleClass('fresh');
});
}
if 函数将始终返回 true。然后,由于它始终为真,它将创建悬停事件。这发生一次,在文档加载时。然后你就被这个事件监听器困住了。
相反,MHZ,我认为您想要以下内容:
theyAreVisible = function() {
var shown = $('.webpopup,.phonepopup').map(function() {
return $(this).is(':visible') ? true : null;
});
return shown.length > 0 ? true : false;
};
$("tr").hover(function() {
if (!theyAreVisible()) $(this).addClass('fresh');
}, function() {
if (!theyAreVisible()) $(this).removeClass('fresh');
});
这样,您就有了一个悬停事件处理程序,用于检查是否有任何弹出窗口打开。map 函数将遍历每一个并查找是否有任何个人是打开的,如果找到则返回 true。但是我们不能只返回这个结果,因为 if([]) 将解析为 true。考虑:
if ([]) { console.log('yup!'); }
带走:
- 始终在事件处理程序中进行检查(在本例中为切换)
- 确保你认为解决为真的事情实际上是解决为真的。