2010-06-04 10 views
14

Mam filtr działający na zestawie elementów listy, który zanika mniej pożądane elementy z dokładnością do 0,25, ale chciałbym, aby ich nieprzezroczystość powróciła do wartości 1, a następnie z powrotem do 0,25 po najechaniu kursorem myszy. Czy to dość proste?jQuery: Czy możesz znaleźć krycie wybranego elementu za pomocą jQuery?

Mam tylko problem ze znalezieniem sposobu na pobranie aktualnego krycia wybranego elementu, więc mogę go zapisać w zmiennej do użycia.

$('#centerPanel li').hover(function(){ 
     var currentOpacity = $(this).????? 
     $(this).fadeTo(1,1); 
    }, 
    function(){ 
     $(this).fadeTo(1,currentOpacity); 
    }); 
+2

ostrożny z tym kodem. Jeśli ktoś przesunie mysz w tę iz powrotem, zostaniesz wypchany. – nickf

Odpowiedz

1
$('#centerPanel li').hover(function(){ 
    if(!$(this).is(':animated')) 
     $(this).animate({opacity: 'toggle'}, 1000); 
}, 
function(){ 
    if(!$(this).is(':animated')) 
     $(this).animate({opacity: 'toggle'}, 1000); 
}); 
+0

To tak naprawdę nie odpowiada na pytanie "czy można znaleźć krycie wybranego elementu za pomocą jQuery" ... Ale nie miałem -1. – Jeriko

+1

+1 - Nie odpowiadając bezpośrednio na pytanie, jest to związane z ustawianiem krycia wybranego elementu. Innymi słowy twój przykład ilustruje dobry punkt. –

+0

@Jeriko: Czy nie sądzisz, że jeśli odpowiedź różni się nieco od dokładnego pytania, ale jest lepszym rozwiązaniem dla podstawowego problemu, należy również wspomnieć? – jAndy

1

Musisz ustawić var ​​mouseout krycia poza funkcją, będzie to uniemożliwić funkcję do zmiany tej wartości.

nohoverOpacity = $('#centerPanel li').css("opacity"); 
hoverOpacity = 1; 
dur = 1000; 
$('#centerPanel li').hover(function(){ 
     $(this).fadeTo(dur,hoverOpacity); 
    },function(){ 
     $(this).fadeTo(dur,nohoverOpacity); 
}); 

Czy tego chcesz? :)

5

istnieje kompletny przewodnik "Get Current Krycie w MSIE jQuery" Kod http://zenverse.net/get-current-opacity-in-msie-using-jquery-cross-browser-codes/

:

function getopacity(elem) { 
    var ori = $(elem).css('opacity'); 
    var ori2 = $(elem).css('filter'); 
    if (ori2) { 
    ori2 = parseInt(ori2.replace(')','').replace('alpha(opacity=',''))/100; 
    if (!isNaN(ori2) && ori2 != '') { 
     ori = ori2; 
    } 
    } 
    return ori; 
} 

//to use it 
var currentopacity = getopacity('div.the-element'); 
Powiązane problemy