2013-03-07 19 views
9

Mam ten skrypt, aby spowodować kolor tła na akapicie po najechaniu linkiem w akapicie. To, czego nie wiem, jak to zrobić, powoduje, że powraca do oryginalnego koloru tła, gdy tylko "un-hover".jquery un-hover

$(function(){ 
    $(".box a").hover(function(){ 
    $(this).parent().css('background-color', '#fff200'); 
    }); 
}); 

Dzięki!

+3

Możesz rozważyć użycie pseudo-selektora ': hover' i zrobienie tego w CSS bez żadnego JavaScriptu. Zobacz http://quirksmode.org/css/selectors/hover.html – Brandon

+0

Nie sądzę, bym mógł używać tylko CSS, ponieważ zmieniam kolor elementu nadrzędnego. Nie sądzę, że możesz wybrać selektor rodzica w samym CSS. – user1754427

Odpowiedz

28

Funkcja poniżej działa jak onmouseover i onmouseout

$(function(){ 
    $(".box a").hover(function(){ 
    $(this).parent().css('background-color', '#fff200'); 
    }, function(){ 
     // change to any color that was previously used. 
     $(this).parent().css('background-color', '#fff200'); 
    }); 
}); 
+0

To działa idealnie (z wyjątkiem tego, że drugi kolor tła musiał być w oryginalnym kolorze - #fff w moim przypadku - nie w hover color). – user1754427

+0

Wiem, dlatego wstawiłem komentarz, aby zmienić na poprzedni kolor :) cieszę się, że mogłem pomóc, nie zapomnij przyjąć odpowiedzi –

1

W modelu jQuery documentation znajduje się narzędzie obsługi kursora. Tam chcesz przywrócić kolor do oryginału. Jeśli wszystko, co robisz, zmienia kolor, czemu nie używać CSS?

$(function(){ 
    $(".box a").hover(function(){ 
     $(this).parent().css('background-color', '#fff200'); 
    },function(){ 
     $(this).parent().css('background-color', '#originalhexcolor'); 
    }); 
}); 
+0

Nie sądzę, abym mógł używać tylko CSS, ponieważ zmieniam kolor elementu nadrzędnego. Nie sądzę, że możesz wybrać selektor rodzica w samym CSS. – user1754427

+0

Widzę ... potem myślę, że jQuery jest najlepszą drogą do przodu. –

2

JQuery

$(".box a").hover(function(){ 
    $(this).parent().css('background-color', '#fff200'); 
}, function() { 
    $(this).parent().css('background-color', '#ffffff'); 
}); 

Zobacz fiddle.

1

Jeśli trzeba użyć jQuery do tego użyć addClass() zamiast css():

$('.box a').hover(function(){ 
    $(this).closest('.box').addClass('hoveredOver'); 
}, function(){ 
    $(this).closest('.box').removeClass('hoveredOver'); 
}); 

Dzięki CSS:

.hoveredOver { 
    background-color: #fff; 
} 

JS Fiddle demo.

Odniesienia: